55. 跳跃游戏

Posted cold-windy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了55. 跳跃游戏相关的知识,希望对你有一定的参考价值。

给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。
输入: [2,3,1,1,4]
输出: true
解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。

//感想:一开始感觉没什么思路感觉像是那种搜索树的结构,想去看下答案,我点开题解的一刹那,我看见了四个字动态规划,我果断地回到了题目描述的界面,算是没看答案吧。。。

//思路:从底向上动态规划,我们声明一个dp数组,初始值最后一个元素设置为true,那肯定可以啊,然后往前走,如果遍历到的元素它的值为step,我们就可以从这个位置到加上step的位置所有的元素都可以抵达,也就说这中间只要有一个为true,那么这个位置就为true,如果走到step还是为false,说明这个位置走不到末尾,设为false,就这样走到头,得到第一个元素可以到达末尾不。

下面是代码:

 1 class Solution {
 2     public boolean canJump(int[] nums) {
 3         if(nums==null||nums.length==0)
 4             return false;
 5         int n=nums.length;
 6         boolean[] dp=new boolean[n];
 7         dp[n-1]=true;
 8         for(int i=n-2;i>=0;i--)
 9         {
10             int step=nums[i];
11             for(int j=1;j<=step;j++)
12             {
13                 if(dp[i+j]==true)
14                 {
15                     dp[i]=true;
16                     break;
17                 }
18             }
19         }
20         return dp[0];
21     }
22 }

 

以上是关于55. 跳跃游戏的主要内容,如果未能解决你的问题,请参考以下文章

算法动态规划 ⑦ ( LeetCode 55. 跳跃游戏 | 算法分析 | 代码示例 )

java刷题--55跳跃游戏

LeetCode 55. 跳跃游戏

LeetCode #55 跳跃游戏

leetcode55跳跃游戏

Leetcode55. 跳跃游戏(JAVA贪心)