首先是跳台阶,上次京东问我还没想到,真是太拉了。。。。对于这种问题我的建议是先找规律,通过找规律很容易发现这是个斐波那契数列,那就用递归来实现就可以了。
public class Solution {
public int jumpFloor(int target) {
if(target==1){
return 1;
}
if(target==2){
return 2;
}
return jumpFloor(target-1)+jumpFloor(target-2);
}
}
值得一提的是这个跳台阶扩展问题,如果陷入第一题的惯性思维,找规律估计要累死,这种一下子就感觉很复杂的问题,可以往排列组合的方向想,借用了一个大佬的思路,除了最后一个台阶,每个台阶都有两种可能性,跳或者不跳,实际上就是2的(n-1)次方,太精髓了。
public class Solution {
public int jumpFloorII(int target) {
int total=1;
for(int i=0;i<target-1;i++){
total = total * 2;
}
return total;
}
}