题目链接:
力扣https://leetcode-cn.com/problems/climbing-stairs/
【分析】经典的DP问题,上第n个台阶的方式为从n-1上1个或者从n-2上两个,所以dp[n] = dp[n - 1] + dp[n - 2],而dp[0] = dp[1] = 1,所以后面就可以根据递推式来了。
class Solution {
public int climbStairs(int n) {
int[] ans = new int[46];
ans[0] = ans[1] = 1;
for(int i = 2; i <= n; i++) ans[i] = ans[i - 2] + ans[i - 1];
return ans[n];
}
}
class Solution:
def climbStairs(self, n: int) -> int:
ans = [1, 1]
for i in range(2, n + 1):
ans.append(ans[i - 2] + ans[i - 1])
return ans[n]