链接
1306. 跳跃游戏 III
题目
示例
说明
1 <= arr.length <= 5 * 10^4
0 <= arr[i] < arr.length
0 <= start < arr.length
思路
DFS深度优先搜索,由于所有数都为正整数,已经搜索过的位置设置为-1。
C++ Code
class Solution {
public:
bool dfs(vector<int>& arr, int start){
if(start<0||start>=arr.size()||arr[start]==-1) return false;
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) {
return dfs(arr,start);
}
};