我的坑
一开始就卡在了思考碰到0怎么办,差点想去回溯【最长距离碰到0就返回前一个数判断能不能跳过】,但想想觉得也太麻烦了就直接看题解了哎。
大佬的想法就是不管三七二十一先遍历下,不断更新能到达的最远距离就是了。【如果碰到跨不过的0这个最远距离就不会再更新了】
var canJump = function(nums) {
let cover =0;
//一直纠结于0,但就是遍历就完事了
if(nums.length ===1) return true
//i 小于的是cover,一种剪枝
for(let i =0;i<=cover;i++){
cover =Math.max(cover,i+nums[i]);//能够到达的最远的地方
if(cover>=nums.length-1){
//这里是nums.length-1,因为下标从0开始哈。
return true;
}
}
return false;
};