LeetCode 55. 跳跃游戏(贪心)—— JavaScript

题链接:https://leetcode-cn.com/problems/jump-game/


题描述:


解题思路:

对于位置 i 上的元素,它可以跳跃到的最远位置为 i + nums[i],如果某个元素跳跃的最远位置超出或等于数组末尾的位置则返回 true。

即,我们依次遍历数组元素,并实时维护一个最远位置,对于当前遍历元素,如果该元素在最远位置内,则代表该元素是可到达的。


代码实现:

/**
 * @param {number[]} nums
 * @return {boolean}
 */
var canJump = function(nums) {
    if (nums.length == 1) {
        return true;
    }
    let maxStep;
    maxStep = nums[0];
    for (let i = 1; i < nums.length; i++) {
        if (maxStep >= nums.length - 1) {
            return true;
        }
        if (i <= maxStep && i + nums[i] > maxStep) {
            maxStep = i + nums[i];
        }
    }
    return false;
};

时间复杂度:O(n)

空间复杂度:O(1)

猜你喜欢

转载自blog.csdn.net/ySFRaabbcc/article/details/110817084
今日推荐