给定一个非负整数数组nums,假定最开始处于下标为0的位置,数组里面的每个元素代表下一跳能够跳跃的最大长度。如果能够跳到数组最后一个位置,则返回true,否则返回false。
数据范围:
[2,1,3,3,0,0,100]
true
首先位于nums[0]=2,然后可以跳2步,到nums[2]=3的位置,再跳到nums[3]=3的位置,再直接跳到nums[6]=100,可以跳到最后,返回true
[2,1,3,2,0,0,100]
false
无论怎么样,都跳不到nums[6]=100的位置
class Solution: def canJump(self , nums: List[int]) -> bool: length = len(nums) if length <= 1: return True i = 0 val = nums[i] + i if val >=len(nums)-1: return True while True: maxs = 0 for j in range(i+1,val+1): if j < len(nums)-1: val = nums[j] + j if val >= maxs: maxs = val i = j if maxs >= len(nums)-1: return True if not maxs: return False