#leetcode210. 课程表 II

    ID: 3044 传统题 6000ms 512MiB 尝试: 1 已通过: 1 难度: 3 上传者: 标签>图论拓扑排序深度优先搜索广度优先搜索图

课程表 II

现在你总共有 numCourses 门课程需要学习,课程编号为 0 到 numCourses - 1。

给定数组 prerequisites,其中 prerequisites[i] = [a, b] 表示在学习课程 a 之前,必须先完成课程 b。

请返回一个能够完成所有课程的学习顺序。如果存在多个合法顺序,返回其中任意一个即可;如果不可能完成所有课程,返回空数组。

提交形式

本题采用 LeetCode 风格提交,只需要提交:

class Solution {
public:
    vector<int> findOrder(int numCourses, vector<vector<int>>& prerequisites) {
        // your code
    }
};

不需要编写 main()。

数据范围

  • 1 <= numCourses <= 2000
  • 0 <= prerequisites.length <= numCourses * (numCourses - 1)
  • prerequisites[i].length == 2
  • 0 <= a_i, b_i < numCourses
  • a_i != b_i
  • 所有 [a_i, b_i] 互不相同

样例 1

输入:

numCourses = 2, prerequisites = [[1,0]]

一种合法输出:

[0,1]

样例 2

输入:

numCourses = 4, prerequisites = [[1,0],[2,0],[3,1],[3,2]]

[0,1,2,3] 和 [0,2,1,3] 都是合法答案。

样例 3

输入:

numCourses = 1, prerequisites = []

输出:

[0]