1. 题意理解
每次可以上1个台阶或2个台阶,如果要上n个台阶,有多少种走法?
2. 题目分析:
1. 动态规划;
2. 使用递归方法会超时:climbStairs(n)=climbStairs(n-1)+climbStairs(n-2);
3. 使用非递归方式实现(动规要善用已计算结果);
解题代码:
public class Solution {
public int climbStairs(int n) {
if(n==0 || n==1){
return n;
}
int preOneStep=1;
int preTwoStep=1;
int cur=2;
for(int i=2; i<=n; i++){
cur=preOneStep+preTwoStep;
preTwoStep=preOneStep;
preOneStep=cur;
}
return cur;
}
}