题目描述:
难度: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
};
看完两件小事
如果你觉得这篇文章对你挺有启发,我想请你帮我两个小忙:
- 把这篇文章分享给你的朋友 / 交流群,让更多的人看到,一起进步,一起成长!
- 关注公众号 「画漫画的程序员」,公众号后台回复「资源」 免费领取我精心整理的前端进阶资源教程
本文著作权归作者所有,如若转载,请注明出处
转载请注明:文章转载自「 Js中文网 · 前端进阶资源教程 」https://www.javascriptc.com