1. 首页

LeetCode 045. 跳跃游戏 II

题目描述:

难度:Hard

相关话题:贪心算法数组

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

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

你的目标是使用最少的跳跃次数到达数组的最后一个位置。

示例:

输入: [2,3,1,1,4]
输出: 2
解释: 跳到最后一个位置的最小跳跃数是 2。
    从下标为 0 跳到下标为 1 的位置,跳1步,然后跳3步到达数组的最后一个位置。

说明:

假设你总是可以到达数组的最后一个位置。


思路:

贪心算法,定义一个变量maxRange表示每一个位置能跳到的最大位置,定义变量rangeEnd表示当前能跳到最大的位置,遍历nums不断更新maxRange
i===rangeEnd,更新rangeEnd为最新的maxRange,表示当前这一段能跳的最远距离。

/**
 * @来源: Javascript中文网 - 前端进阶资源教程 https://www.javascriptc.com/
 * @介绍:一个致力于帮助开发者用代码改变世界为使命的平台,每天都可以在这里找到技术世界的头条内容
 * @param {number[]} nums
 * @return {number}
 */
var jump = function (nums) {
  if(nums.length<=1)return 0
  let maxRange=nums[0]
  let rangeEnd=nums[0]
  let step=1
  for(let i=0;i<nums.length-1;i++){
    maxRange=Math.max(maxRange,nums[i]+i)
    if(i===rangeEnd){
      rangeEnd=maxRange
      step++
    }
  }
  return step
};

看完两件小事

如果你觉得这篇文章对你挺有启发,我想请你帮我两个小忙:

  1. 关注我们的 GitHub 博客,让我们成为长期关系
  2. 把这篇文章分享给你的朋友 / 交流群,让更多的人看到,一起进步,一起成长!
  3. 关注公众号 「画漫画的程序员」,公众号后台回复「资源」 免费领取我精心整理的前端进阶资源教程

JS中文网是中国领先的新一代开发者社区和专业的技术媒体,一个帮助开发者成长的社区,目前已经覆盖和服务了超过 300 万开发者,你每天都可以在这里找到技术世界的头条内容。欢迎热爱技术的你一起加入交流与学习,JS中文网的使命是帮助开发者用代码改变世界

本文著作权归作者所有,如若转载,请注明出处

转载请注明:文章转载自「 Js中文网 · 前端进阶资源教程 」https://www.javascriptc.com

标题:LeetCode 045. 跳跃游戏 II

链接:https://www.javascriptc.com/4405.html

« VS CODE 轻松调试 Nginx
LeetCode 044. 通配符匹配»
Flutter 中文教程资源

相关推荐

QR code