Skip to content

Commit 9c039e2

Browse files
authored
Create Climbing Stairs - Leetcode 70.py
1 parent a9d2036 commit 9c039e2

File tree

1 file changed

+67
-0
lines changed

1 file changed

+67
-0
lines changed

Climbing Stairs - Leetcode 70.py

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
# Recursive Solution
2+
class Solution:
3+
def climbStairs(self, n: int) -> int:
4+
if n == 1:
5+
return 1
6+
if n == 2:
7+
return 2
8+
9+
return self.climbStairs(n-2) + self.climbStairs(n-1)
10+
# Time: O(2^n)
11+
# Space: O(n)
12+
13+
14+
# Top Down Memoization
15+
class Solution:
16+
def climbStairs(self, n: int) -> int:
17+
memo = {1:1, 2:2}
18+
def f(n):
19+
if n in memo:
20+
return memo[n]
21+
else:
22+
memo[n] = f(n-2) + f(n-1)
23+
return memo[n]
24+
25+
return f(n)
26+
# Time: O(n)
27+
# Space: O(n)
28+
29+
30+
# Bottom Up Tabulation
31+
class Solution:
32+
def climbStairs(self, n: int) -> int:
33+
if n == 1:
34+
return 1
35+
if n == 2:
36+
return 2
37+
38+
dp = [0] * n
39+
dp[0] = 1
40+
dp[1] = 2
41+
42+
for i in range(2, n):
43+
dp[i] = dp[i-2] + dp[i-1]
44+
45+
return dp[n-1]
46+
# Time: O(n)
47+
# Space: O(n)
48+
49+
50+
# Bottom up Constant Space
51+
class Solution:
52+
def climbStairs(self, n: int) -> int:
53+
if n == 1:
54+
return 1
55+
if n == 2:
56+
return 2
57+
58+
two_back = 1
59+
one_back = 2
60+
for i in range(2, n):
61+
next_num = two_back + one_back
62+
two_back = one_back
63+
one_back = next_num
64+
65+
return one_back
66+
# Time: O(n)
67+
# Space: O(1)

0 commit comments

Comments
 (0)