55. 跳跃游戏(中等)-贪心算法
2023-05-30 本文已影响0人
MatrixZ
给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。
数组中的每个元素代表你在该位置可以跳跃的最大长度。
判断你是否能够到达最后一个下标
分析
- 两个方案
- 一个是从左到右,一个是从右到左,
- 从左到右扩大地盘,从右到左,向我靠近
class Solution:
def canJump(self, nums: List[int]) -> bool:
n = len(nums)
rightmost = 0
for i in range(n):
if i <= rightmost:
rightmost = max(rightmost, i + nums[i])
if rightmost >= n - 1:
return True
return False
class Solution:
def canJump(self, nums: List[int]) -> bool:
n = len(nums)
position = n - 1
for i in range(n -1 , -1, -1):
if i + nums[i] >= position:
position = i
if position == 0:
return True
return False