跳躍遊戲III(BFS)

2021-10-08 04:46:24 字數 1097 閱讀 1245

感覺這題也可以用之前總結的模板,主要注意一下下標不要重複訪問,因為第一次訪問無法到達對應元素值為0 的下標,就已經證明這個下標處已無解,重複訪問會陷入死迴圈。所以我們可以將訪問過的下標對應數值設定為-1,表示已經訪問過。

這裡有乙個非負整數陣列 arr,你最開始位於該陣列的起始下標 start 處。當你位於下標 i 處時,你可以跳到 i + arr[i] 或者 i - arr[i]。

請你判斷自己是否能夠跳到對應元素值為 0 的 任一 下標處。

注意,不管是什麼情況下,你都無法跳到陣列之外。

示例 1:

輸入:arr = [4,2,3,0,3,1,2], start = 5 輸出:true 解釋: 到達值為 0 的下標 3 有以下可能方案:

下標 5 -> 下標 4 -> 下標 1 -> 下標 3 下標 5 -> 下標 6 -> 下標 4 -> 下標 1 -> 下標 3

示例 2:

輸入:arr = [4,2,3,0,3,1,2], start = 0 輸出:true 解釋: 到達值為 0 的下標 3 有以下可能方案:

下標 0 -> 下標 4 -> 下標 1 -> 下標 3

示例 3:

輸入:arr = [3,0,2,1,2], start = 2 輸出:false 解釋:無法到達值為 0 的下標 1 處。

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

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

LintCode Jump Game 跳躍遊戲

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

跳躍遊戲二

給定乙個非負整數陣列,假定你的初始位置為陣列第乙個下標。陣列中的每個元素代表你在那個位置能夠跳躍的最大長度。你的目標是到達最後乙個下標,並且使用最少的跳躍次數。例如 a 2,3,1,1,4 a 2,3,1,1,4 a 2,3 1,1 4 到達最後乙個下標的最少跳躍次數為 22 2。先跳躍 11 1 ...