lintcode116 跳躍遊戲 深度搜尋

2021-09-27 15:53:21 字數 986 閱讀 2604

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

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

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

樣例

樣例 1

輸入 :[2

,3,1

,1,4

]輸出 :

true

樣例 2

輸入 :[3

,2,1

,0,4

]輸出 :

false

注意事項

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

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

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

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

深度搜尋:從第乙個開始,對其中的每一步進行檢索,如果可以到達最後一步,則正確

class

solution

void

dfs(vector<

int>

&a,int index,

bool

&judge)

if(index>=a.

size()

||a[index]==0

)for

(int i =

1; i <= a[index]

; i++)}

};

方法二:設定乙個判斷陣列,對每乙個可以到達的地方賦值為true,看最後乙個數是否為true即可

bool

canjump

(vector<

int>

&a)}

}return result[result.

size()

-1];

}

兩次過 Lintcode 116 跳躍遊戲

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

116 跳躍遊戲

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

LintCode 跳躍遊戲 I VS跳躍遊戲 II

陣列中的每個元素代表你在那個位置可以跳躍的最大長度。判斷你是否能到達陣列的最後乙個位置。分析 方法一 基於動態規劃的做法,時間複雜度o n 2 陣列dp i 表示能否到達下標為i的位置,對於從下標i 1開始的每乙個位置,都從下標j 0開始到i 1判斷能否到達j,並且判斷從j開始最遠能否跳到或超過i的...