图210、课程表Ⅱ

    技术2022-07-10  148

    题目

    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; 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; } }
    Processed: 0.016, SQL: 9