拓扑排序
class Solution {
public int[] findOrder(int numCourses, int[][] prerequisites) {
int res[]=new int[numCourses],dgree[]=new int[numCourses],index=0;
for(int i=0;i<prerequisites.length;i++)
dgree[prerequisites[i][0]]++;
Queue<Integer> queue=new LinkedList<Integer>();
for(int i=0;i<dgree.length;i++){
if(dgree[i]==0){
queue.offer(i);
dgree[i]=-1;
}
}
while(queue.size()>0){
int temp1=queue.poll();
res[index++]=temp1;
for(int i=0;i<prerequisites.length;i++){
if(prerequisites[i][1]==temp1){
dgree[prerequisites[i][0]]--;
if(dgree[prerequisites[i][0]]==0){
queue.offer(prerequisites[i][0]);
dgree[prerequisites[i][0]]=-1;
}
}
}
}
return index==numCourses?res:new int[0];
}
}