File tree Expand file tree Collapse file tree 1 file changed +67
-0
lines changed Expand file tree Collapse file tree 1 file changed +67
-0
lines changed Original file line number Diff line number Diff line change
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)
You can’t perform that action at this time.
0 commit comments