55. 跳跃游戏
image.png

我的坑

一开始就卡在了思考碰到0怎么办,差点想去回溯【最长距离碰到0就返回前一个数判断能不能跳过】,但想想觉得也太麻烦了就直接看题解了哎。
大佬的想法就是不管三七二十一先遍历下,不断更新能到达的最远距离就是了。【如果碰到跨不过的0这个最远距离就不会再更新了】

  1. var canJump = function(nums) {
  2. let cover =0;
  3. //一直纠结于0,但就是遍历就完事了
  4. if(nums.length ===1) return true
  5. //i 小于的是cover,一种剪枝
  6. for(let i =0;i<=cover;i++){
  7. cover =Math.max(cover,i+nums[i]);//能够到达的最远的地方
  8. if(cover>=nums.length-1){
  9. //这里是nums.length-1,因为下标从0开始哈。
  10. return true;
  11. }
  12. }
  13. return false;
  14. };