LeetCode-Course Schedule

Posted LiBlog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode-Course Schedule相关的知识,希望对你有一定的参考价值。

There are a total of n courses you have to take, labeled from 0 to n - 1.

Some courses may have prerequisites, for example to take course 0 you have to first take course 1, which is expressed as a pair: [0,1]

Given the total number of courses and a list of prerequisite pairs, is it possible for you to finish all courses?

For example:

2, [[1,0]]

There are a total of 2 courses to take. To take course 1 you should have finished course 0. So it is possible.

2, [[1,0],[0,1]]

There are a total of 2 courses to take. To take course 1 you should have finished course 0, and to take course 0 you should also have finished course 1. So it is impossible.

Note:
The input prerequisites is a graph represented by a list of edges, not adjacency matrices. Read more about how a graph is represented.

click to show more hints.

Solution:

 1 public class Solution {
 2     public boolean canFinish(int numCourses, int[][] prerequisites) {
 3         if (numCourses <= 1)
 4             return true;
 5 
 6         int[] visited = new int[numCourses];
 7         HashMap<Integer, List<Integer>> childMap = new HashMap<Integer, List<Integer>>();
 8         for (int[] pair : prerequisites) {
 9             int course1 = pair[0], course2 = pair[1];
10             if (childMap.containsKey(course1)) {
11                 childMap.get(course1).add(course2);
12             } else {
13                 List<Integer> childList = new ArrayList<Integer>();
14                 childList.add(course2);
15                 childMap.put(course1, childList);
16             }
17         }
18 
19         
20         for (int i=0;i<numCourses;i++)
21             if (visited[i]==0){
22                 if (!traverse(visited,i,childMap))  return false;
23             }
24 
25         return true;
26     }
27     
28     public boolean traverse(int[] visited, int curNode, HashMap<Integer,List<Integer>> childMap){
29         visited[curNode] = 1;
30         if (childMap.containsKey(curNode)){
31             List<Integer> childs = childMap.get(curNode);
32             for (int child : childs){
33                 if (visited[child]==1) return false;
34                 if (visited[child]==2) continue;
35                 if (!traverse(visited,child,childMap)) return false;
36             }
37         }
38         visited[curNode] = 2;
39         return true;
40     }
41 
42 }

 

以上是关于LeetCode-Course Schedule的主要内容,如果未能解决你的问题,请参考以下文章

leetcode-Course Schedule-207

.htaccess url在将php更改为html时重写不起作用

Spring Schedule

python任务调度之schedule

模块 schedule 定时任务

请帮忙翻译一下:Effort and schedule slippage for integration & testing