// class Solution {
// // 动态规划,空间复杂度O(1),自底向上迭代
// public int numWays(int n) {
// if(n==0||n==1){
// return 1;
// }
// if(n==2){
// return 2;
// }
// int a=1;
// int b=2;
// int sum=0;
// for(int i=3;i<=n;i++){
// sum=(a+b)%1000000007;
// a=b;
// b=sum;
// }
// return sum;
// }
// }
class Solution {
// 备忘录,自顶向下递归
public int numWays(int n) {
int[] h=new int[n+1];
return helper(n,h);
}
public int helper(int n,int[] help){
if(n==0||n==1){
return 1;
}
if(n==2){
return 2;
}
if(help[n]!=0){
return help[n];
}
help[n]= (helper(n-1,help)+helper(n-2,help))%1000000007;
return help[n];
}
}