leetcode55.跳跃游戏 贪心算法

class Solution:
def canJump(self, nums: List[int]) -> bool:
optim,optim_index,i=0,0,0
while i<=len(nums)-1:
optim=i+nums[i]
if optim>=len(nums)-1:
return True
if optim==i:
return False
i=optim_index
for j in range(i,optim+1):
cur=nums[j]+j
if cur>=optim:
optim=cur
optim_index=j

思路:检测当前元素所能到的最远的下角标,然后从这个元素到最远的下角标对应的元素开始循环,实时更新对应的最远的下角标和此时对应的j。每次需要初始化循环开始的元素为j,次数就是到最远的下角标。在这个过程中如果大于了最后一个数组的元素的index就返回。

你可能感兴趣的:(leetcode刷题)