[leetcode] 55. 跳跃游戏

55. 跳跃游戏

分明就是45. 跳跃游戏 II的缩水版本嘛。。😓,难度高的版本居然放在了前面,把像我这种有强迫症的必须按照题号刷题的人不放在眼里么。。。

class Solution {
    public boolean canJump(int[] nums) {
        return jump(nums) != Integer.MAX_VALUE;
    }

    public int jump(int[] nums) {
        int f[] = new int[nums.length];
        if (nums.length == 0) {
            return 0;
        }
        if (nums.length == 1) {
            return 0;
        }
        f[nums.length - 1] = 0;
        for (int i = nums.length - 2; i >= 0; i--) {
            f[i] = findMin(f, i, nums[i]) + 1;
            if (f[i] < 0) f[i] = Integer.MAX_VALUE;
        }

        return f[0];

    }

    private int findMin(int[] f, int i, int num) {
        int min = Integer.MAX_VALUE;
        for (int j = 1; j <= num && i + j < f.length; j++) {
            min = Math.min(min, f[i + j]);
        }
        return min;
    }
}
posted @ 2018-07-23 22:20  ACBingo  阅读(149)  评论(0编辑  收藏  举报