55. Jump Game

https://leetcode.com/problems/jump-game/arrow-up-right

solution

class Solution:
    def canJump(self, nums: List[int]) -> bool:
        if not nums:
            return False
        if len(nums) == 1:
            return True

        i = 0
        res = 0  # 目前能覆盖的最大范围

        while i <= res:  # 注意是 <=
            res = max(res, i + nums[i])
            if res >= len(nums) - 1:
                return True
            i += 1

        return False

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

follow up-jump game系列

45 Jump Game IIarrow-up-right

  • 记录当前覆盖最远距离和下一次覆盖最远距离,当前距离最远时,增加一步到下一次最远距离

时间复杂度:O() 空间复杂度:O()

  • 动态规划

时间复杂度:O() 空间复杂度:O()

1306. Jump Game IIIarrow-up-right

  • bfs

  • dfs

1345. Jump Game IVarrow-up-right

1340. Jump Game Varrow-up-right

1696. Jump Game VIarrow-up-right

1871. Jump Game VIIarrow-up-right

  • 超时

*2297. Jump Game VIIIarrow-up-right

Last updated