这种题 需要先写出来一个 关系式,找出来跳法 和 台阶 的关系
台阶 | 跳法 |
---|---|
1 | 1(1) |
2 | 2(1 1,2) |
3 | 3(1 1 1,1 2, 2 1) |
4 | 5(1111,11 2,1 2 1,2 11,2 2) |
现在看出来了吗?n台阶的跳法 = (n-1) + (n-2) 回到了斐波那契数列
java:
public class Solution {
public int JumpFloor(int target) {
int[] save={0,1,2};
if(target >=0 && target < 3)
return save[target];
int all = 0;
int first = 2; //这就相当于 n-1 初始是台阶2的值 因为 1,2 已经在前面处理了 所以是从3开始
int end = 1; // 这是 n-2
for(int n=3;n<=target;n++){
all = first + end;
end = first;
first = all;
}
return all;
}
}