具体思路:
本来以为是DP啥的,没想到普通BFS就可以。。。
都不用双向BFS,我人傻了;
具体代码:
class Solution {
public:
bool canReach(vector<int>& arr, int start) {
int n=arr.size();
vector<bool>vis(n,true);
queue<int>q1,q2;
q1.push(start);
vis[start]=false;
while(!q1.empty()){
int len=q1.size();
for(int i=0;i<len;i++){
int index=q1.front();
q1.pop();
if(arr[index]==0)
return true;
if(index+arr[index]<n&&vis[index+arr[index]]){
q1.push(index+arr[index]);
vis[index+arr[index]]=false;
}
if(index-arr[index]>=0&&vis[index-arr[index]]){
q1.push(index-arr[index]);
vis[index-arr[index]]=false;
}
}
}
return false;
}
};