爬楼梯
class Solution:
def climbStairs(self, n: int) -> int:
if n == 1:
return 1
dp = [0 for _ in range(n + 1)]
dp[1], dp[2] = 1, 2
for i in range(3, (n + 1)):
dp[i] = dp[i - 1] + dp[i - 2]
return dp[-1]
复杂度分析
- 时间复杂度:O(n),n为楼梯阶数
- 空间复杂度:O(n)
改进
可以只储存前两个元素将空间复杂度降为O(1);
或者是利用斐波那契数列的通项公式直接进行计算
