既是一个斐波那契数列问题,需要注意的是 0级台阶,的方法为1。理解为原地旋转吧/xyx
代码如下:有注释解释
class Solution {
public:
int fib(int n) {
if(n<=1)
return 1;
//直接返回1,节省时间
int a[n+1];//开一个n+1的数组
a[0]=1;
a[1]=1;
//赋初值
for(int i=2;i<=n;i++)
{
//dp思想,画图可以分析得知,a[n]=a[n-1]+a[n-2];
a[i]=(a[i-1]+a[i-2])%(1000000007);
}
return a[n];
}
};