题目描述:
- 给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。
- 数组中的每个元素代表你在该位置可以跳跃的最大长度。
- 判断你是否能够到达最后一个下标。
示例:
思路描述:
1、如果输入数组的长度为1,即出发就为终点,直接返回true。
2、如何判断能否到达最后一个元素,我采取的方法是,计算出实时能够到达的最远下标,若最后一个元素的下标小于最远下标,那就可以到达最后一个元素。
3、如何实时确定最远下标,即当前的i加上第i个位置上的数值。
代码:
var canJump = function(nums) {
if(nums.length==1) {
return true;
}
let maxStep;
maxStep = nums[0];
for (let i = 1; i < nums.length; i++) {
if (maxStep >= nums.length - 1) {
return true;
}
if (i <= maxStep && i + nums[i] > maxStep) {
maxStep = i + nums[i];
}
}
return false;
}