题目链接:https://leetcode.com/problems/climbing-stairs/submissions/
动态规划法
代码
class Solution:
def climbStairs(self, n: int) -> int:
#入参判断
if not n or n ==1 : return 1
#初始赋值
dp=[ 0 for i in range(n)]
dp[0],dp[1]=1,2
#递推表示
for i in range(2,n):
dp[i]=dp[i-1]+dp[i-2]
return dp[n-1]
思路详解
递推方法
代码
class Solution:
def climbStairs(self, n: int) -> int:
if not n or n ==1 : return 1
if n == 2 :return 2
a,b=1,2
for _ in range(3,n+1):
c=a+b
a,b=b,c
return c
思路详解
和斐波拉契数列等价,相对于dp算法,这种方式空间比较省。