leetcode207&210 Course Schedule
拓扑排序
背景:课程的拓扑排序:
求出所有节点的入度,找出入度为0的结点…
使用数据结构:HashMap、Queue。
class Solution { // 超时做法 不晓得为什莫 时间复杂度 o(n2)
public boolean canFinish(int numCourses, int[][] prerequisites) {
int[] degree = new int[numCourses];
Queue<Integer> queue = new LinkedList<>();
for(int[] pre : prerequisites){
degree[pre[0]]++;
}
for(int m = 0; m < numCourses; m++){
if(degree[m] == 0 )
queue.add(m);
}
int i = 0;
while(!queue.isEmpty()){
int p = queue.poll();
i++;
for(int[] pre : prerequisites){
if(degree[pre[1]] == p)
degree[pre[0]]--;
if( degree[pre[0]] == 0)
queue.add(pre[0]);
}
}
return i == numCourses ? true : false;
}
}
链接: 参考链接.