目录
核心:数组遍历 最远可以到达的位置的维护
技巧:实际数组例子带入 抽象写代码
1,题目
给你一个非负整数数组 nums
,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。
判断你是否能够到达最后一个下标,如果可以,返回 true
;否则,返回 false
。
2,代码
贪心算法
/**
* @param {number[]} nums
* @return {boolean}
*/
var canJump = function(nums) {
let maxDis = 0;
const len = nums.length;
for(let i=0;i<len;i++){
if(i <= maxDis){
maxDis = Math.max(i+nums[i],maxDis);
if(maxDis >= len -1){
return true;
}
}else{
return false;
}
}
};
3,学习与总结
3.1 解题思路巩固
题意抽取:
解题思路:
3.2 记录错误
/**
* @param {number[]} nums
* @return {boolean}
*/
var canJump = function(nums) {
let maxDis = nums[0];
const len = nums.length;
for(let i=1;i<len;i++){
if(i <= maxDis){
maxDis = Math.max(i+nums[i],maxDis);
if(maxDis >= len -1){
return true;
}
}else{
return false;
}
}
};
报错内容:
原因分析:
没有考虑到数组长度仅为1的情况