55. 跳跃游戏
class Solution(object):
def canJump(self, nums):
"""
:type nums: List[int]
:rtype: bool
"""
n = len(nums)
if n == 0:
return False
if n == 1:
return True
if nums[0] == 0:
return False
max_position = 0
for i in range(n):
if max_position < nums[i] + i:
max_position = nums[i] + i
if max_position >= n-1:
return True
if nums[i] == 0 and i == max_position:
return False
return True
思路:
贪心法
综上,时间复杂度O(n),空间复杂度是O(1)。
注意点:
写麻烦了,官方方法更简洁。
class Solution(object):
def canJump(self, nums):
"""
:type nums: List[int]
:rtype: bool
"""
n, max_position = len(nums), 0
for i in range(n):
if i <= max_position:
max_position = max(max_position, nums[i] + i)
if max_position >= n-1:
return True
return False