题目: 跳跃游戏 II

来自智得网
跳转至: 导航、​ 搜索

分析

贪心法

该题可以使用贪心法进行求解。

计算每一跳的区间范围。

假如示例1的数组为 a ,第一个元素第一跳最大是2,可以第一跳之后位于的区间是数组中的 a[1:2] ,第二跳可以从a1或者a2开始跳,如果a1起跳的区间是a[2:4],a2起跳只能跳到a[3],所以第二跳的区间范围是 a[2:4] 。

如果某一跳的右区间大于等于数组长度减一,则是问题答案。

题解

贪心法

class Solution {
    public int solute(int[] nums) {
        int len = nums.length, jumpCnt = 0, left = 0, right = 0;
        while(right < len-1){
            int maxBound = right;
            for(int i = left; i <= right; i++)
                maxBound = Math.max(nums[i]+i, maxBound);
            left = right + 1;
            right = maxBound;
            jumpCnt++;
        }

        return jumpCnt;
    }
}