JZ9 变态跳台阶,四种解法

变态跳台阶

http://www.nowcoder.com/questionTerminal/22243d016f6b47f2a6928b4313c85387

解法一:暴力破解

public class Solution {
    public int JumpFloorII(int target) {
        if(target<3) return target;
        int[] ans=new int[target+1];
        ans[1]=1; ans[2]=2;
        for(int i=3; i<target+1; i++){
            for(int j=1; j<i; j++){
                ans[i]+=ans[j];
            }
            ans[i]++;
        }
        return ans[target];
    }
}

解法二:减少中间值

public class Solution {
    public int JumpFloorII(int target) {
        if(target<3) return target;
        int sum=3;
        for(int i=3; i<target; i++){
            int res=sum+1;
            sum+=res;
        }
        return sum+1;
    }
}

解法三:移位

public class Solution {
    public int JumpFloorII(int target) {
        if(target==0||target==1) return 1;
        int a=1;
        for(int i=1; i<target; i++){
            a<<=1;
        }
        return a;
    }
}

解法四:公式法

public class Solution {
    public int JumpFloorII(int target) {
        if(target==0||target==1) return 1;
        return (int) Math.pow(2, target-1);
    }
}
全部评论

相关推荐

2025-12-27 22:28
门头沟学院 Java
点赞 评论 收藏
分享
牛马人的牛马人生:一开始看成了网吧
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务