mirror of
https://gitee.com/coder-xiaomo/leetcode-problemset
synced 2025-01-10 18:48:13 +08:00
45 lines
2.2 KiB
HTML
45 lines
2.2 KiB
HTML
<p>现在你总共有 <code>numCourses</code> 门课需要选,记为 <code>0</code> 到 <code>numCourses - 1</code>。给你一个数组 <code>prerequisites</code> ,其中 <code>prerequisites[i] = [a<sub>i</sub>, b<sub>i</sub>]</code> ,表示在选修课程 <code>a<sub>i</sub></code> 前 <strong>必须</strong> 先选修 <code>b<sub>i</sub></code> 。</p>
|
||
|
||
<ul>
|
||
<li>例如,想要学习课程 <code>0</code> ,你需要先完成课程 <code>1</code> ,我们用一个匹配来表示:<code>[0,1]</code> 。</li>
|
||
</ul>
|
||
|
||
<p>返回你为了学完所有课程所安排的学习顺序。可能会有多个正确的顺序,你只要返回 <strong>任意一种</strong> 就可以了。如果不可能完成所有课程,返回 <strong>一个空数组</strong> 。</p>
|
||
|
||
<p> </p>
|
||
|
||
<p><strong>示例 1:</strong></p>
|
||
|
||
<pre>
|
||
<strong>输入:</strong>numCourses = 2, prerequisites = [[1,0]]
|
||
<strong>输出:</strong>[0,1]
|
||
<strong>解释:</strong>总共有 2 门课程。要学习课程 1,你需要先完成课程 0。因此,正确的课程顺序为 <code>[0,1] 。</code>
|
||
</pre>
|
||
|
||
<p><strong>示例 2:</strong></p>
|
||
|
||
<pre>
|
||
<strong>输入:</strong>numCourses = 4, prerequisites = [[1,0],[2,0],[3,1],[3,2]]
|
||
<strong>输出:</strong>[0,2,1,3]
|
||
<strong>解释:</strong>总共有 4 门课程。要学习课程 3,你应该先完成课程 1 和课程 2。并且课程 1 和课程 2 都应该排在课程 0 之后。
|
||
因此,一个正确的课程顺序是 <code>[0,1,2,3]</code> 。另一个正确的排序是 <code>[0,2,1,3]</code> 。</pre>
|
||
|
||
<p><strong>示例 3:</strong></p>
|
||
|
||
<pre>
|
||
<strong>输入:</strong>numCourses = 1, prerequisites = []
|
||
<strong>输出:</strong>[0]
|
||
</pre>
|
||
|
||
<p> </p>
|
||
<strong>提示:</strong>
|
||
|
||
<ul>
|
||
<li><code>1 <= numCourses <= 2000</code></li>
|
||
<li><code>0 <= prerequisites.length <= numCourses * (numCourses - 1)</code></li>
|
||
<li><code>prerequisites[i].length == 2</code></li>
|
||
<li><code>0 <= a<sub>i</sub>, b<sub>i</sub> < numCourses</code></li>
|
||
<li><code>a<sub>i</sub> != b<sub>i</sub></code></li>
|
||
<li>所有<code>[a<sub>i</sub>, b<sub>i</sub>]</code> <strong>互不相同</strong></li>
|
||
</ul>
|