[来源] 🔗55. 跳跃游戏
题目
给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。
数组中的每个元素代表你在该位置可以跳跃的最大长度。
判断你是否能够到达最后一个下标。
示例 1:
1 | 输入:nums = [2,3,1,1,4] |
示例 2:
1 | 输入:nums = [3,2,1,0,4] |
思路
首先这个思路和数组元素的索引值关系非常大。
对于数组 [2, 3, 1, 1, 4] 我们尽可能的取最大的跳跃长度,那么最大跳跃长度能跳到的索引位置为 2, 4, 3, 4
我们可以得出 k = Math.max(k, nums[i] + i), k为能够跳到的最远位置。
如果此时k == nums.length - 1 那么就能够到达最后一个标
此时考虑到以下情况,[1, 0, 2, 1, 4],针对每一个元素,最大跳跃长度能跳到的索引位置为[1, 1, 4, 4]。但是此时i = 1时,不能进行跳跃,也就是无法跳到下一个节点,那么尽管后面的元素跳跃长度能够到达最后一个下标,此时结果也为false。
所以我们需要通过i 和 k值进行对比,当且仅当i ≤ k时,该节点能够进行下一个跳跃
代码
1 | function canJump(nums: number[]): boolean { |