class Solution {
public int[] findOrder(int numCourses, int[][] prerequisites) {
int[] map = new int[numCourses];
for(int i = 0;i<prerequisites.length;i++){
int k = prerequisites[i][0];
map[k]++;//计算每个点的入度,即每个点的先修课程数目
}
Queue<Integer> queue = new LinkedList<Integer>();
for(int i = 0;i<map.length;i++){
if(map[i] == 0)
queue.add(i);
}
List<Integer> result = new ArrayList<Integer>();
int count = queue.size();
while(!queue.isEmpty()){
int temp = queue.poll();
result.add(temp);
for(int i = 0;i<prerequisites.length;i++){
if(temp == prerequisites[i][1]){
int t = prerequisites[i][0];
map[t]--;
if(map[t] == 0){
queue.add(t);
count++;
}
}
}
}
if(count != numCourses){
int[] a = new int[0];
return a;
}else{
int[] a = new int[result.size()];
for(int i = result.size()-1;i>=0;i--){
a[i] = result.get(i);
}
return a;
}
}
}
LeetCode 210 Course Schedule II
猜你喜欢
转载自blog.csdn.net/Serenity0614/article/details/78719937
今日推荐
周排行