Leetcode55:跳跃游戏——贪心
这篇文章发布已经超过两年,部分工具、版本或观点可能已经变化,请结合最新信息判断。
题目
https://leetcode-cn.com/problems/jump-game/
题解
所谓贪心算法,我个人浅薄的理解就是每一步找局部最优解,最终找到整体最优解。
那么这道题可以有这样的思路:从前往后遍历nums的元素,实时维护最远可以到达的位置 far。
对于当前遍历的位置i,先判断i<=far,再有far = max(far, i+nums[i])
直到far>=len(nums),则返回True,否则返回False。
代码:
class Solution:
def canJump(self, nums: List[int]) -> bool:
far = nums[0]
size = len(nums)
for i in range(size):
if i > far:
return False
far = max(far, nums[i]+i)
if far >= size-1:
return True
return False
ps:因为前面做了几题递归,所以本来想用递归做,尝试一下代码不太会写,但我觉得思路上应该是行得通的。看来我的技术还有很大的提升空间呀!
评论区已延迟加载滑到评论区附近时会自动加载,也可以现在手动打开。



