116 跳躍遊戲

2022-08-11 05:15:16 字數 1096 閱讀 4298

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

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

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

注意事項

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

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

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

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

樣例

a =[2,3,1,1,4],返回 true.

a =[3,2,1,0,4],返回 false.

乙個很典型的動態規劃問題

把這個陣列看作一排點

如果能從x點跳到y點,那麼就連線這兩個點

這樣我們就構建了乙個dag

令f(n)表示為我們是否能到達n點

dag(v, e)

init f(1..n)=false

for(1...n)

f(i)=true iff f(j)=true & (j,i) in e;

那麼對於這個題來說,我們可以用乙個和a大小一樣的vector(bool)來記錄我們是否能到達某個點。

1

bool canjump(vector &a) 10}

1112

for(int i=0;i1;i++)16}

1718

return

true

;19 }

同時,如果用貪心演算法的話

遍歷陣列,對於每乙個位置,計算出當前所能到的最遠距離,並把當前距離與目前所能到的最遠距離進行比較

1

bool canjump(vector &a)

9return

true

; 10 }

lintcode116 跳躍遊戲 深度搜尋

給出乙個非負整數陣列,你最初定位在陣列的第乙個位置。陣列中的每個元素代表你在那個位置可以跳躍的最大長度。判斷你是否能到達陣列的最後乙個位置。樣例 樣例 1 輸入 2 3,1 1,4 輸出 true 樣例 2 輸入 3 2,1 0,4 輸出 false 注意事項 這個問題有兩個方法,乙個是貪心和 動態...

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

中文english 給出乙個非負整數陣列,你最初定位在陣列的第乙個位置。陣列中的每個元素代表你在那個位置可以跳躍的最大長度。判斷你是否能到達陣列的最後乙個位置。樣例 1 輸入 2,3,1,1,4 輸出 true樣例 2 輸入 3,2,1,0,4 輸出 false 這個問題有兩個方法,乙個是貪心和動態...

兩次過 Lintcode 116 跳躍遊戲

給出乙個非負整數陣列,你最初定位在陣列的第乙個位置。陣列中的每個元素代表你在那個位置可以跳躍的最大長度。判斷你是否能到達陣列的最後乙個位置。a 2,3,1,1,4 返回 true.a 3,2,1,0,4 返回 false.這個問題有兩個方法,乙個是貪心和動態規劃。貪心方法時間複雜度為o n 動態規劃...