leetcode解題之課程表 II

2021-10-06 06:23:19 字數 1124 閱讀 7422

現在你總共有 n 門課需要選,記為 0 到 n-1。

在選修某些課程之前需要一些先修課程。 例如,想要學習課程 0 ,你需要先完成課程 1 ,我們用乙個匹配來表示他們: [0,1]

給定課程總量以及它們的先決條件,返回你為了學完所有課程所安排的學習順序。

可能會有多個正確的順序,你只要返回一種就可以了。如果不可能完成所有課程,返回乙個空陣列。

示例 1

:輸入:2,

[[1,

0]] 輸出:[0

,1]解釋: 總共有 2 門課程。要學習課程 1,你需要先完成課程 0。因此,正確的課程順序為 [0,

1] 。

示例 2

:輸入:4,

[[1,

0],[

2,0]

,[3,

1],[

3,2]

]輸出:[0

,1,2

,3] or [0,

2,1,

3]解釋: 總共有 4 門課程。要學習課程 3,你應該先完成課程 1 和課程 2。並且課程 1 和課程 2 都應該排在課程 0 之後。

因此,乙個正確的課程順序是 [0,

1,2,

3] 。另乙個正確的排序是 [0,

2,1,

3] 。

說明:

這個問題相當於查詢乙個迴圈是否存在於有向圖中。如果存在迴圈,則不存在拓撲排序,因此不可能選取所有課程進行學習。 通過 dfs 進行拓撲排序

下面的**是參考官方題解來寫的,一開始不理解陣列indegree的操作為啥不會越界,以為可選的課程會有在n門(0至n-1)之外的,實際是沒有的,給定的n組課程只會是0至n-1

class

solution

for(

int i=

0;iint i=0;

while

(!q.

isempty()

)}}}

if(i==numcourses)

return

newint[0

];}}

課程表 iii

leetcode 課程表I,課程表II

課程表 你這個學期必須選修 numcourse 門課程,記為 0 到 numcourse 1 在選修某些課程之前需要一些先修課程。例如,想要學習課程 0 你需要先完成課程 1 我們用乙個匹配來表示他們 0,1 給定課程總量以及它們的先決條件,請你判斷是否可能完成所有課程的學習?示例 1 輸入 2,1...

leetcode之課程表

你這個學期必須選修 numcourse 門課程,記為 0 到 numcourse 1 在選修某些課程之前需要一些先修課程。例如,想要學習課程 0 你需要先完成課程 1 我們用乙個匹配來表示他們 0,1 給定課程總量以及它們的先決條件,請你判斷是否可能完成所有課程的學習?示例 1 輸入 2,1,0 輸...

LeetCode題解 207 課程表

現在你總共有 n 門課需要選,記為 0 到 n 1。在選修某些課程之前需要一些先修課程。例如,想要學習課程 0 你需要先完成課程 1 我們用乙個匹配來表示他們 0,1 給定課程總量以及它們的先決條件,判斷是否可能完成所有課程的學習?示例 1 輸入 2,1,0 輸出 true 解釋 總共有 2 門課程...