题目:力扣
思路:试想一下,若从第三位置可以跳到第五位置,那只要前面有一个点能跳到第三位置即可说明整体能跳到第五位置。
终点为最后一个点开始,看终点的前面是否存在一个点能跳到终点,若有这个点,此时终点为这个点,继续同样逻辑。
代码:
var canJump = function (nums) {
let curEnd = nums.length - 1 // 当前的终点
for (let i = nums.length - 2; i >= 0; i--) {
const distance = curEnd - i // 当前的终点与当前点之间的距离
if (nums[i] >= distance) { // 如果当前点最大跳跃超过距离则能到终点
curEnd = i // 终点变为能跳到终点的这个点
}
}
return curEnd === 0
};
结果: