leetcode 55跳躍遊戲

2021-09-30 01:38:02 字數 1329 閱讀 3014

題目要求:

給定乙個非負整數陣列,你最初位於陣列的第乙個位置。

陣列中的每個元素代表你在該位置可以跳躍的最大長度。

判斷你是否能夠到達最後乙個位置。

如:[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 輸出...