一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
考虑使用 斐波那契数列(递归)
495 ms 9300K
public class Solution {
public int JumpFloor(int target) {
if(target<1)
return 0;
if(target==1)
return 1;
if(target==2)
return 2;
return JumpFloor(target-1)+ JumpFloor(target-2);
}
}
迭代
运行时间:15ms 占用内存:8924k
public class Solution {
public int JumpFloor(int target) {
if(target==1||target==2||target==0)
return target;
int f1=1,f2=2,f=0,i=3;
while(i<=target){
f=f1+f2;
f1=f2;
f2=f;
i++;
}
return f;
}
}
逆向思维 斐波那契
运行时间:15ms 占用内存:9420k
public class Solution {
public int JumpFloor(int target) {
int f1=1,f2=2;
while(--target>0){
f2=f2+f1;
f1=f2-f1;
}
return f1;
}
}