210.Course Schedule II
Might Duplicated
class Solution {
public int[] findOrder(int numCourses, int[][] prerequisites) {
int[][] matrix = new int[numCourses][numCourses];
int[] indegree = new int[numCourses];
int[] ans = new int[numCourses];
//E Part
for(int[] pre : prerequisites){
int preCourse = pre[1];
int readyCourse = pre[0];
if(matrix[preCourse][readyCourse] == 0){
indegree[readyCourse]++;
matrix[preCourse][readyCourse] = 1;
}
}
Deque<Integer> queue = new ArrayDeque<>();
for(int i = 0 ; i < numCourses; i++){
if(indegree[i] == 0)
queue.add(i);
}
int count = 0;
while(!queue.isEmpty()){
int course = queue.poll();
ans[count] = course;
count++;
for(int i = 0; i < numCourses; i++){
if(matrix[course][i] != 0){
if(--indegree[i] == 0){
queue.add(i);
}
}
}
}
if(count == numCourses)
return ans;
else
return new int[0];
}
}