1.题目:

给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。

数组中的每个元素代表你在该位置可以跳跃的最大长度。

判断你是否能够到达最后一个下标。


示例 1:

输入:nums = [2,3,1,1,4] 输出:true 解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。

来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/jump-game 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。




2.代码:

class Solution {
    public boolean canJump(int[] nums) {
        if(nums.length==1) return true;
        int coverRange = 0;//记录可以跳跃的最大长度,注意这里的长度时最大的,不是必须的
        for(int i=0; i<=coverRange; i++){//注意这里的范围只能在最大长度范围内
            coverRange = Math.max(coverRange,nums[i]+i);//记录新的最大范围,注意这里的范围也要加上现在所在的范围
            if(coverRange>=nums.length-1){//当最大范围超过了数组长度减一就返回true
                return true;
            }
        }
        return false;

    }
}