Skip to content

Instantly share code, notes, and snippets.

@JamesJi9277
Created December 13, 2015 15:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save JamesJi9277/874eb933028d3a557f9b to your computer and use it in GitHub Desktop.
Save JamesJi9277/874eb933028d3a557f9b to your computer and use it in GitHub Desktop.
假设给你了两个list,一个list是node,一个list是edge
假设图中允许单个node的存在
public class Solution {
public boolean hasCycle(ArrayList<Node> nodes, ArrayList<Edge> edges) {
for(Node node : nodes) {
if(detect(node : edges)) {
return true;
}
}
return false;
}
private boolean detect(Node node, ArrayList<Edge> edges) {
HashSet<Node> set = new HashSet<Node>();
if(set.contains(node)) {
return true;
}
boolean res = false;
for(Edge edge: edges) {
if(edge.start == node && !set.contains(edge.end)) {
set.add(edge.start);
set.add(edge.end);
res = res || detect(edge.end, edges);
set.remove(edge.end);
}
}
return res;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment