Problem 207: Course Schedule
思路
复杂度
public class Solution {
public boolean canFinish(int numCourses, int[][] prerequisites) {
ArrayList[] graph = new ArrayList[numCourses];
int[] nodes = new int[numCourses];
Queue<Integer> queue = new LinkedList<Integer>();
int count = 0;
for (int i = 0; i < numCourses; i++) {
graph[i] = new ArrayList();
}
for (int i = 0; i < prerequisites.length; i++) {
nodes[prerequisites[i][1]]++;
graph[prerequisites[i][0]].add(prerequisites[i][1]);
}
for (int i = 0; i < nodes.length; i++) {
if (nodes[i] == 0) {
queue.offer(i);
count++;
}
}
while (queue.size() != 0) {
int course = queue.poll();
for (int i = 0; i < graph[course].size(); i++) {
int pointer = (int) graph[course].get(i);
nodes[pointer]--;
if (nodes[pointer] == 0) {
queue.offer(pointer);
count++;
}
}
}
if (count == numCourses) {
return true;
} else {
return false;
}
}
}Last updated