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;
}
}