我的解法
class Solution {
public int numWays(int n) {
if(n == 0 || n == 1){
return 1;
}else if(n == 2){
return 2;
}
int res = 2;
int pre = 1;
int cur = 1;
for(int i = 2; i <= n; i++){
res = (pre + cur) % 1000000007;
int tmp = cur;
cur = res;
pre = tmp;
}
return res;
}
}
感悟
这是一个简单的动态规划问题,一只青蛙,如果想跳上第n
阶台阶,是有两种方案的,第一种是从n-1
的问题跳一格 第二种是从n-2
的位置跳两格 所以设f(n)为跳上n
阶台阶的跳法,那么就有f(n) = f(n-1)+f(n-2)