Skip to content

题目描述

给定非负整数数组 nums,初始在第一个位置。每个元素代表最大跳跃长度,判断是否能到达最后一个位置。

解题思路

维护最远可达位置 max_reach,遍历每个位置,如果当前位置超过最远可达位置则无法继续。

不需要真正去跳,只需要知道"能到达的最远位置"是否覆盖终点。

代码实现

python
class Solution:
    def canJump(self, nums: list[int]) -> bool:
        max_reach = 0
        for i in range(len(nums)):
            if i > max_reach:
                return False
            max_reach = max(max_reach, i + nums[i])
        return True

复杂度分析

  • 时间复杂度: O(n)
  • 空间复杂度: O(1)

关键要点

  • 维护最远可达位置,遍历过程中判断当前位置是否可达。

基于 VitePress 构建