难度:中等
给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。
判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。
func canJump(nums []int) bool {
var length = len(nums)
var pos = 0
for i := 0; i< length; i++ {
// if i > pos。如果当前下标 i 已经超出了之前能到达的最远位置 pos,说明无法到达 i,
// 更无法到达终点,直接返回 false。
if i > pos {
return false
}
pos = max(pos, i+nums[i])
// 更新最远距离:
// 如果 i 在可达范围内,则计算从 i 处跳跃能到达的最远位置 i + nums[i]。
// 用 max(pos, i + nums[i]) 更新 pos,保持 pos 始终是当前已知的最远可达位置。
}
return true
}