力扣练习题
题目分析及代码实现
class Solution {
public int[] findOrder(int numCourses, int[][] prerequisites) {
int[][] Group=new int[numCourses][numCourses];
int[] rd=new int[numCourses];
int[] result=new int[numCourses];
int m=0;
for(int i=0;i<prerequisites.length;i++)
{
Group[prerequisites[i][1]][prerequisites[i][0]]=1;
rd[prerequisites[i][0]]++;
}
Queue<Integer> queue=new LinkedList<>();
for(int j=0;j<numCourses;j++)
{
if(rd[j]==0)
{
queue.offer(j);
}
}
int count=0;
while(!queue.isEmpty())
{
int temp=queue.poll();
result[m]=temp;
m++;
for(int k=0;k<numCourses;k++)
{
if(Group[temp][k]!=0)
{
rd[k]--;
if(rd[k]==0)
{
queue.offer(k);
}
}
}
count++;
}
if(count!=numCourses)
{
return new int[0];
}
else
{
return result;
}
}
}