给你一个非负整数数组 nums
,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。
判断你是否能够到达最后一个下标,如果可以,返回 true
;否则,返回 false
。
该题要求尽可能跳到更远的地方,如果最后能够跳到的地方比给出的数组的长度更长,那么就一定可以到达数组的最后
在这里,数组中的每个元素代表你在该位置可以跳跃的最大长度。并不代表必须跳这个数字,可以在数字范围内任选,这是一个文字陷阱。
采用的方法为从数组开头进行遍历,如果在该位置所能达到的最长距离大于已知的最长距离,就更新最长距离,最后比较最长距离和数组的长度,如果最长距离大,则说明能够到达。
class Solution:
def canJump(self, nums: List[int]) -> bool:
max_i = 0
for i in range(len(nums)):
//判断该位置是否能够到达,并判断该位置能到达的最远距离是否比已知的大
if i+nums[i]>max_i & max_i>=i:
max_i = i+nums[i]
return max_i>=len(nums)-1