本篇文章记录一下leetcode 上"跳跃游戏"这两道题目
第一道题目是要让我们判断是否可以跳到最后位置:
我们可以遍历这个数组,然后更新可以跳到的最远位置,如果可以跳到最后,返回true,否则返回false。
class Solution:
def canJump(self, nums: List[int]) -> bool:
maxPos = 0
n = len(nums)
for i in range(n):
# 首先判断当前位置是否可跳到
# 如果可以跳到,然后更新可以跳到的最远位置
if i <= maxPos:
maxPos = max(maxPos, i + nums[i])
if maxPos >= n - 1:
return True
return False
第二题让我们得到跳到最后位置的最少步数:
我们可以在到达上一步可以到达的最远位置时使得step加1
class Solution:
def jump(self, nums: List[int]) -> int:
# 边界条件
maxPos = 0
end = 0
minStep = 0
for i in range(len(nums)-1):
if i <= maxPos:
# 更新maxPos
maxPos = max(maxPos, i+nums[i])
if i == end:
minStep += 1
end = maxPos
return minStep