前言
本来以为上线的就可以舒服一阵子了,谁知道还是没有机会闲着。几个通宵下来,头脑昏昏的。算法的学习上也有些落下。
跳跃游戏
题目描述
给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。
数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标
解题思路
先通过下标得到每个数可以走的最大步数
找到步长最大的继续直到超出边界
解:
function canJump(nums) {
let jumArr = [];
// 根椐已有的数据得到每一步最大可以跳多远;
for(let i = 0 ;i < nums.length; i++) {
jumArr[i] = nums[i] + i;
}
// 设置一个最大值带表每次可以跳的最远值
let maxJum = jumArr[0];
let index = 0; // 跳跃循环
while(index < nums.length && index <= maxJum) {
// 如果可以跳的值超过预设的最远值那么覆盖
if(maxJum < jumArr[index]) {
maxJum = jumArr[index];
}
index++;
}
// 最后比较一下数组的长度与循环截止值是否相等;
if(index == nums.length) {
return true
}
return false;
};