116 跳躍遊戲 存在型動態規劃

2022-02-15 00:06:56 字數 1147 閱讀 1974

中文english

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

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

判斷你是否能到達陣列的最後乙個位置。

樣例 1

輸入 : [2,3,1,1,4]

輸出 : true

樣例 2

輸入 : [3,2,1,0,4]

輸出 : false

這個問題有兩個方法,乙個是貪心動態規劃

貪心方法時間複雜度為o(n)

動態規劃方法的時間複雜度為為o(n^2)

我們手動設定小型資料集,使大家可以通過測試的兩種方式。這僅僅是為了讓大家學會如何使用動態規劃的方式解決此問題。如果您用動態規劃的方式完成它,你可以嘗試貪心法,以使其再次通過一次。

陣列a的長度不超過5000,每個元素的大小不超過5000

輸入測試資料 (每行乙個引數)如何理解測試資料?

class

solution:

"""@param a: a list of integers

@return: a boolean

"""def canjump(self, a):

# write your code here

# write your code here

l =len(a)

dp = [false]*l

dp[0] =true

#迴圈每乙個位置,外層j迴圈,內層迴圈,只要前面的每乙個位置均為true,同時需要判斷前面是否存在大於當前節點的i + a[i] >=j(說明之前就已經存在可以跳過當前節點)

for j in range(1

,l):

#判斷前面是否存在可以跳到當前位置j

for i in

range(j):

if (i + a[i]) >= j and dp[i] ==true:

dp[j] =true

break

return dp[l - 1]

116 跳躍遊戲

給出乙個非負整數陣列,你最初定位在陣列的第乙個位置。陣列中的每個元素代表你在那個位置可以跳躍的最大長度。判斷你是否能到達陣列的最後乙個位置。注意事項 這個問題有兩個方法,乙個是貪心和動態規劃。貪心方法時間複雜度為o n 動態規劃方法的時間複雜度為為o n 2 我們手動設定小型資料集,使大家可以通過測...

動態規劃之跳躍遊戲

跳躍遊戲 給出乙個非負整數陣列,你最初定位在陣列的第乙個位置,陣列中的每個元素代表你在那個位置可以跳躍的最大長度,判斷你是否能到達陣列的最後乙個位置。注意事項 陣列a的長度不超過5000,每個元素的大小不超過5000 樣例 1 輸入 2,3,1,1,4 輸出 true 樣例 2 輸入 3,2,1,0...

遞迴與動態規劃 跳躍遊戲

題目 給定陣列arr,arr i k代表可以從位置i向右跳1 k個距離。比如,arr 2 3,代表從位置2可以跳到位置3 位置4或者位置5。如果從位置0出發,返回最少跳幾次能跳到arr最後的位置上。舉例 arr 3,2,3,1,1,4 arr 0 3,選擇跳到位置2 arr 2 3,可以跳到最後的位...