此博客为《代码随想录》贪心算法章节的学习笔记,主要内容为贪心算法区间问题的相关题目解析。
55. 跳跃游戏
class Solution:
def canJump(self, nums: List[int]) -> bool:
mx = 0 # 最右可达位置
for i, jump in enumerate(nums):
if i > mx:
return False
mx = max(mx, i + jump)
if mx >= len(nums) - 1:
return True
- 维护当前可达的最大右边界,当前下标位置不可达时,返回
False
;mx
已经 >= 最后一个元素的下标时,提前返回True
- 也可理解为区间合并问题,将每一个元素对应为
[i, i + jump]
的区间,求是否能够合并出右边界 >= 最后一个元素下标的大区间
45. 跳跃游戏 II
class Solution:
def jump(self, nums: List[int]) -> int: