茄子算法每日N题之LeetCode45跳跃游戏 II

javascript/jquery

浏览数:177

2020-5-26

LeetCode 45.跳跃游戏 II

大家好,我是灵魂画师–茄子。技术水平一般,喜欢画画。

开始今天的正题。

leetCode45.跳跃游戏 II(每日一题/5月4日)

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

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

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

示例:

输入: [2,3,1,1,4]
输出: 2
解释: 跳到最后一个位置的最小跳跃数是 2。
     从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。
  1. 循环解法
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;

};

以上就是我的思路以及解法了,希望大家喜欢我,我会继续努力的ヾ(◍°∇°◍)ノ゙。(点个赞把我带走吧~~)

作者:灵魂画师_茄子