public static boolean canFinish(int numCourses, int[][] prerequisites) {
// 参数检查
if (prerequisites == null) {
return false;
}
int len = prerequisites.length;
if (numCourses <= 0 || len == 0) {
return true;
}
// 记录每个course的prerequisites的数量
int[] pCounter = new int[numCourses];
for (int i = 0; i < len; i++) {
pCounter[prerequisites[i][0]]++;
}
// 用队列记录可以直接访问的course
LinkedList<Integer> queue = new LinkedList<Integer>();
for (int i = 0; i < numCourses; i++) {
if (pCounter[i] == 0) {
queue.add(i);
}
}
// 取出队列的course,判断
int numNoPre = queue.size();
while (!queue.isEmpty()) {
int top = queue.remove();
for (int i = 0; i < len; i++) {
// 该course是某个course的prerequisites
if (prerequisites[i][1] == top) {
pCounter[prerequisites[i][0]]--;
if (pCounter[prerequisites[i][0]] == 0) {
numNoPre++;
queue.add(prerequisites[i][0]);
}
}
}
}
return numNoPre == numCourses;
}
207. Course Schedule
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- There are a total of n courses you have to take, labeled ...
- There are a total of n courses you have to take, labeled ...
- Medium mock interview的时候美国小哥提到了Kahn's Algorithm, 问我会不会。我没...