一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
思路:首先要想明白如何到达最后一阶台阶,当到达倒数第一阶时,再跳一阶到达;当到倒数第二阶时再跳两阶到达(如果跳一阶就是到达倒数第一阶时的情况了)。任何跳法必然到达倒数第二阶或者倒数第一阶,所以这两种情况的方法和即为所有的跳法
是不是和第七题斐波那契数列思路一样了呢?前一个+当前=后一个
所以代码也几乎一样,只是初始化不一样,上一题从0开始,这个从1(第一阶台阶)开始
public class Solution {
public int JumpFloor(int target) {
if(target <= 2) return target;
int pre = 1;//到第一个台阶有一种跳法
int suf = 2;//到第二个台阶有两种跳法
int res = 0;
for(int i = 3;i <= target;i++){
res = pre + suf;
pre = suf;
suf = res;
}
return res;
}
}