第一种方法
动态规划 从后向前
var canJump = function(nums) {
//生成长度为输入数组长度并且值都为0的数组
const dp=Array(nums.length).fill(0);
dp[nums.length-1]=1;
for(let i=nums.length-2;i>=0;i--)
{
//这里是为了防止跳跃越界的情况
var maxlength=Math.min(nums.length-i-1,nums[i])
for(let j=1;j<=maxlength;j++)
{
if(dp[j+i]===1)
{
dp[i]=1;
break;
}
}
if(dp[i]!==1)
{
dp[i]=-1;
}
}
console.log(dp)
if(dp[0]===1)
{
return true;
}
if(dp[0]===-1)
{
return false;
}
};
第二种方法
当minJump为0时其就表示可以走到最后
var canJump = function(nums) {
let minJump =nums.length-1;
for(let i=nums.length-2;i>=0;i--){
if(nums[i]+i>=minJump)
{
minJump=i;
}
}
if (minJump===0)
{
return true;
}
else{
return false;
}
};