public class Solution {
public int[] FindOrder(int numCourses, int[][] prerequisites) {
int[] res = new int[numCourses];
LinkedList<int>[] list = new LinkedList<int>[numCourses];
for (int i = 0; i < list.Length; i++)
{
list[i] = new LinkedList<int>();
}
int[] count = new int[numCourses];
foreach (var item in prerequisites)
{
list[item[1]].AddLast(item[0]);
count[item[0]]++;
}
Queue<int> queue = new Queue<int>();
for (int i = 0; i < numCourses; i++)
{
if (count[i] == 0)
queue.Enqueue(i);
}
int k = 0;
while (queue.Count > 0)
{
int j = queue.Dequeue();
res[k++] = j;
LinkedListNode<int> p = list[j].First;
while (p != null)
{
count[p.Value]--;
if (count[p.Value] == 0)
queue.Enqueue(p.Value);
p = p.Next;
}
}
bool flag = false;
foreach (var item in count)
{
if (item != 0)
{
flag = true;
break;
}
}
return flag == true ? new int[0] : res;
}
}
题目C#代码public class Solution { public int[] FindOrder(int numCourses, int[][] prerequisites) { int[] res = new int[numCourses]; LinkedList<int>[] list = new LinkedList<int>[numCourses]; for (int i = 0;