1306 跳躍遊戲 III 使用搜尋進行

2021-10-24 07:22:38 字數 1116 閱讀 9212

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

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

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

這一題是跟著陣列下標跳躍進行目標點,最終到達0點,根據規則 在每個點上

可以跳到 i + arr[i] 或者 i - arr[i]。

使用廣搜進行判斷,進入第乙個節點,然後根據規則 i + arr[i] 或者 i - arr[i]。拿到新的節點,如果值為0,則返回ture.如果沒有訪問過則設-1,入棧當前節點

我們初始時將 start 加入佇列。在每一次的搜尋過程中,我們取出隊首的節點 u,它可以到達的位置為 u + arr[u] 和 u - arr[u]。如果某個位置落在陣列的下標範圍 [0, len(arr)) 內,並且沒有被搜尋過,則將該位置加入隊尾。

public

boolean

canreach

(int

arr,

int start)

else

}else

if(arr[one]==-

1)else

arr[one]=-

1;queue.

offer

(one);}

}return

false

;}

但是這個方法不能跑完全部的答案,只能跑完47/54個

換做選擇深度搜尋進行搜尋

public

boolean

canreach

(int

arr,

int start)

int l = arr[start]

+ start;

int r = start - arr[start]

; arr[start]=-

1;return

canreach

(arr,l)

||canreach

(arr,r)

;}

完成全部測試

1306 跳躍遊戲 III

這裡有乙個非負整數陣列 arr,你最開始位於該陣列的起始下標 start 處。當你位於下標 i 處時,你可以跳到 i arr i 或者 i arr i 請你判斷自己是否能夠跳到對應元素值為 0 的 任意 下標處。注意,不管是什麼情況下,你都無法跳到陣列之外。示例 1 輸入 arr 4,2,3,0,3...

1306 跳躍遊戲 III

這裡有乙個非負整數陣列arr,你最開始位於該陣列的起始下標start處。當你位於下標i處時,你可以跳到i arr i 或者i arr i 請你判斷自己是否能夠跳到對應元素值為 0 的任意下標處。注意,不管是什麼情況下,你都無法跳到陣列之外。示例 1 輸入 arr 4,2,3,0,3,1,2 star...

Leetcode 1306 跳躍遊戲III

這裡有乙個非負整數陣列 arr,你最開始位於該陣列的起始下標 start 處。當你位於下標 i 處時,你可以跳到 i arr i 或者 i arr i 請你判斷自己是否能夠跳到對應元素值為 0 的 任意 下標處。注意,不管是什麼情況下,你都無法跳到陣列之外。示例 1 輸入 arr 4,2,3,0,3...