【LeetCode】55. 跳躍遊戲 (動態規劃)
題目描述
給定一個非負整數陣列,你最初位於陣列的第一個位置。
陣列中的每個元素代表你在該位置可以跳躍的最大長度。
判斷你是否能夠到達最後一個位置。
示例 1:
輸入: [2,3,1,1,4]
輸出: true
解釋: 我們可以先跳 1 步,從位置 0 到達 位置 1, 然後再從位置 1 跳 3 步到達最後一個位置。
示例 2:
輸入: [3,2,1,0,4]
輸出: false
解釋: 無論怎樣,你總會到達索引為 3 的位置。但該位置的最大跳躍長度是 0 , 所以你永遠不可能到達最後一個位置。
解題思路
逆向思維,這題說的是從前往後跳的,我們也可以從後往前來推斷,從陣列的最後第二位開始計算,如果jump能跳到最後一位,就需要大於一,如果小於一的話,就需要jump加步數,並向前判斷。如果最後jump等於一,說明可以跳完。
編寫程式碼
func canJump(nums []int) bool {
jump := 1
length := len(nums)
if length <= 0 {
return false
}
if length == 1 {
return true
}
if nums[0] == 0 {
return false
}
for length = length - 2; length >= 0; length-- {
if nums[length] >= jump || nums[length] == 0 {
jump = 1
} else {
jump++
}
}
if jump == 1 {
return true
} else {
return false
}
}
相關文章
- LeetCode 55. 跳躍遊戲 ( 回溯 dp 貪心LeetCode遊戲
- 貪心——55. 跳躍遊戲 && 45.跳躍遊戲II遊戲
- [Leetcode]44.跳躍遊戲Ⅰ&&45.跳躍遊戲ⅡLeetCode遊戲
- [leetcode] 動態規劃(Ⅰ)LeetCode動態規劃
- leetcode:動態規劃( hard )LeetCode動態規劃
- 動態規劃9:變態跳臺問題動態規劃
- leetcode 45. 跳躍遊戲 IILeetCode遊戲
- leetcode總結——動態規劃LeetCode動態規劃
- leetcode題解(動態規劃)LeetCode動態規劃
- LeetCode動態規劃總結LeetCode動態規劃
- 【LeetCode】Word Break 動態規劃LeetCode動態規劃
- LeetCode 45跳躍遊戲&46全排列LeetCode遊戲
- 【leetcode】741 摘櫻桃(動態規劃)LeetCode動態規劃
- leetcode-動態規劃總結LeetCode動態規劃
- 【LeetCode】Word Break II 動態規劃LeetCode動態規劃
- 跳躍遊戲遊戲
- 【動態規劃(一)】動態規劃基礎動態規劃
- [LeetCode] 動態規劃題型總結LeetCode動態規劃
- Leetcode 編輯距離(動態規劃)LeetCode動態規劃
- LeetCode 動態規劃 House Robber 習題LeetCode動態規劃
- [leetcode 1235] [動態規劃]LeetCode動態規劃
- 程式碼隨想錄演算法訓練營day32 | leetcode 122. 買賣股票的最佳時機 II、55. 跳躍遊戲、45. 跳躍遊戲 II演算法LeetCode遊戲
- 動態規劃動態規劃
- LeetCode 分割回文串II(動態規劃)LeetCode動態規劃
- LeetCode入門指南 之 動態規劃思想LeetCode動態規劃
- LeetCode:動態規劃+貪心題目整理LeetCode動態規劃
- LeetCode 343. 整數拆分--動態規劃LeetCode動態規劃
- 微信小遊戲之跳一跳-電腦自動跳躍遊戲
- 0055-跳躍遊戲遊戲
- 動態規劃分析動態規劃
- 動態規劃(DP)動態規劃
- 動態規劃初步動態規劃
- 模板 - 動態規劃動態規劃
- 動態規劃法動態規劃
- leetcode:跳躍遊戲II(java貪心演算法)LeetCode遊戲Java演算法
- Leetcode 題解演算法之動態規劃LeetCode演算法動態規劃
- LeetCode總結,動態規劃問題小結LeetCode動態規劃
- 演算法系列-動態規劃(1):初識動態規劃演算法動態規劃