45

给定一个非负整数数组,最初定位在数组的第一个索引处,数组中的每个元素表示在该位置的最大跳转长度,以最小跳跃次数到达最后一个索引。

算法的思路是在争取每跳最远的greedy,这道题只让求跳数,不关注跳法。

扫描数组,确定当前最远能覆盖的节点,存为l,然后继续扫描,直到当前的路程超过了上一次算出的覆盖范围,同时更新跳数。

/**
 * @param {number[]} nums
 * @return {number}
 */
var jump = function(nums) {
    var step = 0
    var l = 0
    var next = 0
    for(var i = 0; i < nums.length - 1; i++){
        l = Math.max(l, i + nums[i])
        if(i === next){
            step++
            next = l
        }
    }
    return step
};
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容