LeetCode 207. Course Schedule
2018-03-19 21:20
531 查看
public boolean canFinish(int numCourses, int[][] nums) { ArrayList<GraphNode> graph = new ArrayList<>(); int[] visit = new int[numCourses]; for(int i = 0; i < numCourses; i++) { graph.add(new GraphNode(i)); } for(int i = 0; i < nums.length; i++) { graph.get(nums[i][0]).neighbors.add(graph.get(nums[i][1])); } for(int i = 0; i < graph.size(); i++) { if(visit[i] == 0 && !DFS(graph.get(i), visit)) { //未访问且访问时遇到环 return false; } } return true; } public boolean DFS(GraphNode node, int[] visit) { visit[node.label] = 1; //正在访问 for(int i = 0; i < node.neighbors.size(); i++) { if(visit[node.neighbors.get(i).label] == 0) { if(!DFS(node.neighbors.get(i), visit)) { return false; } } else if(visit[node.neighbors.get(i).label] == 1) { return false; } } visit[node.label] = 2; //访问过 return true; }本题的关键点:
1.问题可以转变为图是否有环的问题;
2.如何判断图有环?
利用visit数组,如果深度优先搜索时发现这个节点正在被搜索则证明这个图有环
相关文章推荐
- [leetcode] 207. Course Schedule
- LeetCode207. Course Schedule
- [Leetcode] 207. Course Schedule 解题报告
- 【Leetcode】207. Course Schedule
- leetcode 207. Course Schedule 课程调度 + 拓扑排序
- LeetCode 207. Course Schedule
- LeetCode 207. Course Schedule(拓扑排序-求有向图中是否存在环)
- 第十二周 leetcode 207. Course Schedule(Medium)
- 第四周:[Leetcode]207. Course Schedule
- [LeetCode] 207. Course Schedule
- LeetCode207. Course Schedule
- Leetcode 207. Course Schedule
- leetcode-207. Course Schedule
- LeetCode207. Course Schedule
- Leetcode:207. Course Schedule
- LeetCode 207. Course Schedule
- leetcode 207. Course Schedule
- leetcode 207. Course Schedule
- 【LeetCode】207. Course Schedule (Medium)
- [leetcode]207. Course Schedule