题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
自己的思路
斐波就斐波,别给我整什么青蛙,好了,还是按照上一次写的斐波那契数列的大佬的思路,模仿了它的写法,从下往上进行计算,也是没有去用递归,而是用的for循环,可以几乎不用修改什么代码可以解出这道题,当然能a掉,代码贴出来吧。
class Solution {
public:
int jumpFloor(int number) {
int first =1;
int second =2;
int result=number;
for(int i=3;i<=number;++i){
result = first+second;
first = second;
second = result;
}
return result;
}
};
大佬的思路
看到牛客儿上已经通过的代码里有个老哥用的数组,感觉应该差不多,还是贴出来看看吧。
上代码
class Solution {
public:
int jumpFloor(int number) {
int Fib[number+1]; //由于下标从1到number,所以数组大小要多开一位
Fib[1]=1;
Fib[2]=2;
if(number<=2)
return number;
for(int i=3;i<=number;i++){
Fib[i]=Fib[i-1]+Fib[i-2]; //不要看成递归了,其实他就是用了数组而已,感觉还更占用内存些
}
return Fib[number];
}
};