跳躍遊戲 III

2021-10-09 07:13:55 字數 1490 閱讀 2081

問題描述 :

這裡有乙個非負整數陣列 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 處。

輸入說明 :

首先輸入陣列arr的長度n,

然後輸入n個整數,以空格分隔。

最後輸入整數start。

1 <= n <= 5 * 10^4

0 <= arr[i] < n

0 <= start < n

輸出說明 :

輸出true或false

輸入範例 :

74 2 3 0 3 1 2

5輸出範例 :

true

#include

#include

using

namespace std;

bool

dfs(vector<

int>

&arr,

int start)

int step=arr[start]

; arr[start]=-

1;return step==0||

dfs(arr,start-step)

||dfs

(arr,start+step);}

bool

canreach

(vector<

int>

&arr,

int start)

intmain()

int start;

cin>>start;

bool res=

canreach

(arr,start)

; cout<<

(res?

"true"

:"false");

return0;

}

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...