//跳跃游戏
/*
给定一个非负整数组nums,你在最初位置数组的下方的第一个角标
数组中的每个元素代表你在该位置可以跳跃的最大长度
判断你是否可以到达最后一个下标
*/
const canJump = (nums) => {
const len = nums.length;
let maxJumpStep = 0;
for (let i = 0; i < len; i++) {
if (i > maxJumpStep) {
return false;
}
maxJumpStep = Math.max(maxJumpStep, i + nums[i]);
};
return true;
};
const canJump2 = (nums) => {
const len = nums.length;
const needMaxStep = len - 1;
for (let i = 0; i < len; i++) {
if (nums[i] + i >= needMaxStep) {
return true;
};
};
return true;
};
const jump = (nums) => {
const needJumpMaxStep = nums.length;
let currentMaxJump = nums[0];
let jumpCount = 1;
let i = 0;
while (currentMaxJump < needJumpMaxStep) {
let temp = i;
let maxStep = 0;
for (let j = i + 1; j < currentMaxJump; j++) {
maxStep = Math.max(maxStep, nums[j]);
temp = j;
};
jumpCount += 1;
i = temp;
currentMaxJump = nums[i] + i;
};
return jumpCount;
};
console