LeetCode 45.跳跃游戏 II
大家好,我是灵魂画师--茄子。技术水平一般,喜欢画画。
开始今天的正题。
给定一个非负整数数组,你最初位于数组的第一个位置。
数组中的每个元素代表你在该位置可以跳跃的最大长度。
你的目标是使用最少的跳跃次数到达数组的最后一个位置。
示例:
输入: [2,3,1,1,4]
输出: 2
解释: 跳到最后一个位置的最小跳跃数是 2。
从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。
- 循环解法
let jump = function(nums) {
let max = 0; // 存储每一次跳跃之后,下一次可以跳的最大值
let steps = 0; // 步数,到达边界后步数加1
let end = 0; // 边界(指的是上一次最大值的允许我们跳跃的范围)
let advance = 0; // 当前已经前进的步骤
while(advance < nums.length - 1){
max = Math.max(max,advance + nums[advance])
if(advance == end){
end = max;
steps++;
}
advance++; // 每次循环前进1位
}
return steps;
};
以上就是我的思路以及解法了,希望大家喜欢我,我会继续努力的ヾ(◍°∇°◍)ノ゙。(点个赞把我带走吧~~)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。