思路:dfs方法,从开始节点开始进行深度优先遍历,利用一个数组vis[]记录该位置是否被访问过,如果遍历到一个已经访问的位置,返回false 如果遍历到某位置的值为0,返回true
code:
class Solution {public boolean ans=false;public boolean vis[];public boolean canReach(int[] arr, int start) {vis=new boolean[arr.length];dfs(arr,start);return ans;}public void dfs(int arr[],int start){if(vis[start]==true){//已经访问过return;}vis[start]=true;if(arr[start]==0){ans=true;return;}if(0<=start+arr[start]&&start+arr[start]<arr.length)dfs(arr,start+arr[start]);if(0<=start-arr[start]&&start-arr[start]<arr.length)dfs(arr,start-arr[start]);}
}