你這個學期必須選修 numcourse 門課程,記為 0 到 numcourse-1 。
在選修某些課程之前需要一些先修課程。 例如,想要學習課程 0 ,你需要先完成課程 1 ,我們用乙個匹配來表示他們:[0,1]
給定課程總量以及它們的先決條件,請你判斷是否可能完成所有課程的學習?
①統計課程安排圖中每個節點的入度,生成入度表 rd;
②借助乙個佇列 queue,將所有入度為0的節點入隊;
③當 queue 非空時,依次將隊首節點出隊,在課程安排圖中刪除此節點;
④若整個課程安排圖是有向無環圖,則所有節點一定都入隊並出隊過,即完成拓撲排序。換個角度說,若課程安排圖中存在環,一定有節點的入度始終不為 0。
因此,拓撲排序出隊次數等於課程個數,返回 count==numcourses?true:false; 判斷課程是否可以成功安排。
public
class
solution
queue
queue=
newlinkedlist
<
>()
;//定義乙個佇列用來儲存先修課學完的課程
for(
int j=
0;jint count=0;
while
(!queue.
isempty()
)//佇列非空,還有課程待學}}
count++
;//記錄學了的課程
}return count==numcourses?
true
:false
;//學完的課程等於總的課程即完成任務,反之則反
LeetCode題解 207 課程表
現在你總共有 n 門課需要選,記為 0 到 n 1。在選修某些課程之前需要一些先修課程。例如,想要學習課程 0 你需要先完成課程 1 我們用乙個匹配來表示他們 0,1 給定課程總量以及它們的先決條件,判斷是否可能完成所有課程的學習?示例 1 輸入 2,1,0 輸出 true 解釋 總共有 2 門課程...
LeetCode 拓撲排序 207 課程表
難度中等 你這個學期必須選修 numcourse 門課程,記為 0 到 numcourse 1 在選修某些課程之前需要一些先修課程。例如,想要學習課程 0 你需要先完成課程 1 我們用乙個匹配來表示他們 0,1 給定課程總量以及它們的先決條件,請你判斷是否可能完成所有課程的學習?示例1 輸入 2,1...
《拓撲排序》207 課程表《leetcode》
難度中等656 你這個學期必須選修numcourse門課程,記為0到numcourse 1。在選修某些課程之前需要一些先修課程。例如,想要學習課程 0 你需要先完成課程 1 我們用乙個匹配來表示他們 0,1 給定課程總量以及它們的先決條件,請你判斷是否可能完成所有課程的學習?示例 1 輸入 2,1,...