美文网首页
算法练习21:跳格子(leetcode 55)

算法练习21:跳格子(leetcode 55)

作者: miao8862 | 来源:发表于2021-05-08 20:18 被阅读0次

题目

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

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

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

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

解题

遍历这个数组里的格子数,更新其能跳到的最远距离,当能跳到的最远距离大于等于最后一个下标时,代表着可以跳到。
[2,3,1,1,4]

  • 第1步,下标0,数字2,能跳到的最远距离 arrDes = 0+2 = 2
  • 第2步,下标1 < arrDes,说明这个格子是能跳到的,所以计算这个格子能跳的最远距离 arrDes1 = 1 + 3 = 4,明显,这个距离比上个arrDes大,即arrDes1 > arrDes,所以更新arrDes = Math.max(arrDes, arrDes1) = 4,发现arrDes = 数组最后一个下标4,说明它能跳到最后,返回true,结束
  • 如果发现当前遍历的下标,大于能跳到的最远距离时,说明永远无法跳到最后了
/**
 * @param {number[]} nums
 * @return {boolean}
 */
var canJump = function(nums) {
    // 代表当前可跳到的最远可达点
    let arriveDes = 0;
    for(let i = 0; i < nums.length; i++) {
        // 如果当前格子数下标数,小于等于能跳到的最远距离,就继续遍历计算最远距离
        if(i <= arriveDes) {
            arriveDes = Math.max(arriveDes, i + nums[i])
            if(arriveDes >= nums.length - 1) return true;
        // 否则,当格子下标数超过可跳到的最远距离,代表着永远不可能到最远距离了
        }else{
            return false;
        }
    }
};
console.log(canJump([2,3,1,1,4])) // true

相关文章

  • 算法练习21:跳格子(leetcode 55)

    题目 给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。 数组中的每个元素代表你在该位置可以跳跃的...

  • Python算法学习——个人日记系列(1)

    以Leetcode的练习题作为练习,来从零基础练习算法。 https://leetcode.com/problem...

  • 跳格子(15/21)

    作者:小草 你知道我们今天为什么玩了跳格子这个游戏吗?因为我们前面跳绳任务很认真地完成,所以体育老师奖励我...

  • 算法学习(递归和回溯)

    回溯法 LeetCode 17 电话的字母组合,方法:回溯算法 LeetCode 93 复原IP地址(练习)完...

  • leetcode算法练习

      虽然说我只是一个前端,算法相对来说并不是那么的重要,   但是作为一个程序员,算法多少还是要会一些的   对于...

  • 跳格子

    跳格子,儿时戏也,执石作笔,划地为格,单足跳之,踢瓦而行,先来回者胜。其为格者,矩形之内分格也,共三层,上层如日,...

  • 跳格子

    《给美君的信2》P26-P31 “她如果不读大学,以后就会像我一样”。 作者通过生活里的两件小事情,讲述了女子读书...

  • 跳格子

    偶然 我跳过记忆里的灰色层楼 直达暖阳照耀过的顶塔 让那光明安慰我冷冷的心房 偶然 我跳过隔壁房间的喧闹 让自己长...

  • 跳格子

    相信很多人小时候都玩过跳格子游戏,基本玩法是通过单脚,双脚在画好的格子上跳,比谁的速度最快,因为规则简单,小朋友们...

  • Jump Game

    Jump Game 今天是一道有关贪婪算法的题目,来自LeetCode#55,难度为Medium,Acceptan...

网友评论

      本文标题:算法练习21:跳格子(leetcode 55)

      本文链接:https://www.haomeiwen.com/subject/yebjdltx.html