一. 题目
-
题目
-
示例
二. 方法一
-
解题思路
- 因为一次只能可能走一步或两步, 所以当最后一步可能是1步或2步
- 所以n阶的情况等于n-1阶的情况 + n-2阶的情况
- 斐波那契
-
解题代码
def climbStairs(self, n: int) -> int: if n <= 2: return n res = [_ + 1 for _ in range(n)] for i in range(2, n): res[i] = res[i - 1] + res[i - 2] return res[i]
-
分析
时间复杂度: O(n)
空间复杂度: O(n)
三. 方法二
-
解题思路
和方法1思路一样, 只不过没有采用列表存储, 采用的是两个数存储前两项的结果 -
解题代码
def climbStairs(self, n: int) -> int: if n <= 2: return n first = 1 second = 2 for i in range(n - 2): second, first = second + first, second return second
-
分析
时间复杂度: O(n)
空间复杂度: O(1)