贪心算法
题目简述:给定一个数组,其中每个元素代表能跳跃的最大步数,判断是否能到达终点。
使用maxReach来记录能到达的最远距离,i + nums[i]来计算能达到的最远地方
var canJump = function (nums) {
// 能到达的最远距离
let maxReach = 0
for (let i = 0; i < nums.length; ++i) {
// 如果当前的地方是maxReach不能触及的,那就中断了
if (i > maxReach) {
return false
}
// 更新 maxReach
maxReach = Math.max(maxReach, i + nums[i])
// maxReach 能到达最后
if (maxReach >= nums.length - 1) {
return true
}
}
return false
};
对于这一题的思考,如果测试用例里面没有出现0,那么肯定是能到达终点的
如果里面出现了0,那就要看0的位置了,如果0的位置可以跳过去,那就可以到达终点
所以,如果我们观察0前面的数字,如果能把0跨过去,那就可以到达终点