hashmap存储每个节点能够一步到达的所有节点,然后dfs从start开始寻找能否到达target
bfs和dfs都可以,由于测试用例有很多漏洞,没有出现很多闭环来作测试,很多代码都能过。我的代码就是只解决了部分闭环,最好解决办法就是不要偷懒,利用visited数组记录所有到达过的节点来判断闭环
class Solution {
Map<Integer,List<Integer>> m = new HashMap<>();
public boolean findWhetherExistsPath(int n, int[][] graph, int start, int target) {
for(int i = 0; i < graph.length; i++){
List<Integer> l = m.getOrDefault(graph[i][0],new ArrayList<Integer>());
l.add(graph[i][1]);
m.put(graph[i][0],l);
}
List<Integer> l = m.getOrDefault(start,new ArrayList<Integer>());
for(int i:l){
if(find(i,start,target))
return true;
}
return false;
}
boolean find(int now, int start, int target){
if(now == start)
return false;
if(now == target)
return true;
List<Integer> l = m.getOrDefault(now,new ArrayList<Integer>());
for(int i:l){
if(find(i,start,target))
return true;
}
return false;
}
}