时间限制:1秒
空间限制:32768K
热度指数:243091
算法知识视频讲解
题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
我们假设f(n)代表着n阶台阶的跳法,假设现在有6阶的台阶,最后一步我们可以从第五个台阶跳一级跳上去,或者从第四阶台阶跳两挤跳上去,这样的跳法就是f(4)+f(5)。我们知道f(1)=1,f(2)=2;所以这其实就是一个斐波拉契数列,我们为了降低时间复杂度,我们不用递归,代码实现如下:
public class Solution {
public int JumpFloor(int n) {
// if(target<=0) return 0;
// if(target==1) return 1;
// if(target==2) return 2;
// else {
// return JumpFloor(target-1)+JumpFloor(target-2);
// }
if(n==1||n==2||n==0) return n;
int a=1,b=2;
int c=0;
for(int i=3;i<=n;i++)
{
c=a+b;
a=b;
b=c;
}
return c;
}
}