1.题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
数据范围:0 \leq n \leq 400≤n≤40
要求:时间复杂度:O(n)O(n) ,空间复杂度: O(1)O(1)
2.算法分析
target=3的 1+1+1;1+2;2+1; 3=1+2
target=4 1+1+1+1;1+1+2;1+2+1;2+1+1;2+2; 5=2+3找通项公式:f(n) = f(n-1)+f(n-2)
3.代码实现
public class Solution {
public int jumpFloor(int target) {
if(target <= 0){
return 0;
}else if(target == 1){
return 1;
}else if(target == 2){
return 2;
}else{
// target=3的 1+1+1;1+2;2+1; 3=1+2
// target=4 1+1+1+1;1+1+2;1+2+1;2+1+1;2+2; 5=2+3
// f(n) = f(n-1)+f(n-2)
return jumpFloor(target-1) + jumpFloor(target -2);
}
}
}