您的位置:首页 > 编程语言 > Python开发

leetcode-55 跳跃游戏 Python

2020-03-15 12:14 666 查看

方法一:逆序遍历

class Solution:
def canJump(self, nums: List[int]) -> bool:
last = len(nums)-1
for i in range(len(nums)-2,-1,-1):
if nums[i] >= last-i:
last = i
if last == 0:
return True
return False```
方法二:尽可能到达最远位置(贪心算法)

```python
class Solution:
def canJump(self, nums: List[int]) -> bool:
max_i = 0       #初始化当前能到达最远的位置
for i, jump in enumerate(nums):   #i为当前位置,jump是当前位置的跳数
if max_i>=i and i+jump>max_i:  #如果当前位置能到达,并且当前位置+跳数>最远位置
max_i = i+jump  #更新最远能到达位置
return max_i>=i

方法三:记录所有能到达的位置

class Solution:
def canJump(self, nums: List[int]) -> bool:
k = 0
for i in range(len(nums)):
if i > k:
return False
k = max(k, i + nums[i])
return True
  • 点赞
  • 收藏
  • 分享
  • 文章举报
Xenonon 发布了32 篇原创文章 · 获赞 0 · 访问量 283 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: