題目要求:
給定乙個非負整數陣列,你最初位於陣列的第乙個位置。
陣列中的每個元素代表你在該位置可以跳躍的最大長度。
判斷你是否能夠到達最後乙個位置。
如:[2,3,1,1,4]
輸出:true
[3,2,1,0,4]
輸出:false
無論怎樣,你總會到達索引為 3 的位置。但該位置的最大跳躍長度是 0 , 所以你永遠不可能到達最後乙個位置。
思路: 動態規劃
1.首先 如果陣列中不存在0 則一定能到達最後位置(遇到乙個很憨憨的測試用例,很多很多個1,即按照動態規劃的思想,時間複雜度為n!。出現了超時,因此特判一下 如果0 not in list中,則直接返回true)
2.利用動態規劃 的思想,從最後位置開始,向前找到能到達最後一位最遠的位置。再以新的位置為最後位置,向前找最遠位置。一直到整個陣列為空
如[2,3,1,1,4]第一次找到能夠到達的最遠位置為index = 1 。此時以index=1為最後位置 遞迴運算新的list[2,3] 最遠位置為index=0 再遞迴 新的list為[2],最遠位置為0 遞迴結束 返回true
**實現
class
solution
:def
canjump
(self, nums)
:def
dyp(nums)
: lens =
len(nums)
if lens <=1:
return
true
max_index = lens-
1for i in
range
(lens-1,
-1,-
1):if nums[i]
>=lens-
1-i:
max_index =
min(i,max_index)
if max_index == lens-1:
return
false
if nums[max_index]==0
:return
false
return dyp(nums[
:max_index+1]
)if0not
in nums:
return
true
if nums[0]
==0:if
len(nums)==1
:return
true
else
:return
false
return dyp(nums)
LeetCode55 跳躍遊戲
leetcode55.跳躍遊戲 給定乙個非負整數陣列,你最初位於陣列的第乙個位置。陣列中的每個元素代表你在該位置可以跳躍的最大長度。判斷你是否能夠到達最後乙個位置。示例 1 輸入 2,3,1,1,4 輸出 true 解釋 從位置 0 到 1 跳 1 步,然後跳 3 步到達最後乙個位置。示例 2 輸入...
LeetCode 55 跳躍遊戲
題目鏈結 題目描述 給定乙個非負整數陣列,你最初位於陣列的第乙個位置。陣列中的每個元素代表你在該位置可以跳躍的最大長度。判斷你是否能夠到達最後乙個位置。示例輸入 2,3,1,1,4 輸出 true 解釋 從位置 0 到 1 跳 1 步,然後跳 3 步到達最後乙個位置。輸入 3,2,1,0,4 輸出 ...
LeetCode 55 跳躍遊戲
問題 給定乙個非負整數陣列,你最初位於陣列的第乙個位置,陣列中的每個元素代表你在該位置可以跳躍的最大長度,判斷你是否能夠到達最後乙個位置。示例 1 輸入 2,3,1,1,4 輸出 true 解釋 從位置 0 到 1 跳 1 步,然後跳 3 步到達最後乙個位置。示例 2 輸入 3,2,1,0,4 輸出...