LeetCode:跳跃游戏【55】
生活随笔
收集整理的這篇文章主要介紹了
LeetCode:跳跃游戏【55】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
LeetCode:跳躍游戲【55】
題目描述
給定一個非負整數數組,你最初位于數組的第一個位置。數組中的每個元素代表你在該位置可以跳躍的最大長度。判斷你是否能夠到達最后一個位置。
示例?1:
輸入: [2,3,1,1,4] 輸出: true 解釋: 從位置 0 到 1 跳 1 步, 然后跳 3 步到達最后一個位置。示例?2:
輸入: [3,2,1,0,4] 輸出: false 解釋: 無論怎樣,你總會到達索引為 3 的位置。但該位置的最大跳躍長度是 0 , 所以你永遠不可能到達最后一個位置。題目分析
這道題最好的解法應該就是動態規劃,但是怎么個規劃法呢?
我們可以這樣想,如果倒數第二個元素可以大于等于1,那么我們就可以把問題轉換為是否到達倒數第二個元素,那么一步一步向前推就把問題分解了。
我們需要看第N個元素能夠跳躍的最遠范圍內,是否存在可以到達終點的節點。
Java題解
class Solution {public boolean canJump(int[] nums) {Index[] dp = new Index[nums.length];for (int i = 0; i < dp.length; i++) {dp[i] = Index.UNKNOWN;}dp[dp.length-1]=Index.GOOD;for (int i = nums.length - 2; i >= 0; i--) {int furthestJump = Math.min(i + nums[i], nums.length - 1);for (int j = i + 1; j <= furthestJump; j++) {if (dp[j] == Index.GOOD) {dp[i] = Index.GOOD;break;}}}return dp[0]==Index.GOOD;} }enum Index{GOOD,BAD,UNKNOWN }
?
轉載于:https://www.cnblogs.com/MrSaver/p/9495587.html
總結
以上是生活随笔為你收集整理的LeetCode:跳跃游戏【55】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue、入门
- 下一篇: 201312-1- 出现次数最多的数