你這個學期必須選修 numcourse 門課程,記為 0 到 numcourse-1 。
在選修某些課程之前需要一些先修課程。
例如,想要學習課程 0 ,你需要先完成課程 1 ,我們用乙個匹配來表示他們:[0,1]
給定課程總量以及它們的先決條件,請你判斷是否可能完成所有課程的學習?
示例 1
:輸入:2,
[[1,
0]] 輸出: true
解釋: 總共有 2 門課程。學習課程 1 之前,你需要完成課程 0。所以這是可能的。
示例 2
:輸入:2,
[[1,
0],[
0,1]
]輸出: false
解釋: 總共有 2 門課程。學習課程 1 之前,你需要先完成課程 0;
並且學習課程 0 之前,你還應先完成課程 1。這是不可能的。
輸入的先決條件是由 邊緣列表 表示的圖形,而不是 鄰接矩陣 。詳情請參見圖的表示法。
你可以假定輸入的先決條件中沒有重複的邊。
1<= numcourses <=10^
5
參考:圖graph–拓撲排序(topological sorting)
類似題目:leetcode 210. 課程表 ii(拓撲排序)
class
solution
queue<
int> q;
//入度為0的入隊
//進入下乙個要做的之前是doing狀態
for(auto id
: m[i]
) visited[i]
= done;
//往回走的時候狀態做完了}};
44 ms 14.4 m leetcode207 課程表與拓撲排序
簡單講就是,在乙個排序中,某些元素的存在依賴於另外的元素。或者說某些元素必須排在另外的元素後面。比如說,穿衣服的時候,必須先穿褲衩,再穿秋褲,然後是棉褲和套在最外層的運動褲。而上身的背心和褲衩則沒有依賴關係。1.廣度優先 簡單來講,就是始終把每次將入度為0的頂點去掉。所以排序的結果就是 1,2,3,...
leetcode 207 課程表 拓撲排序找環
執行用時 20 ms,在course schedule的c 提交中擊敗了99.80 的使用者 記憶體消耗 13.2 mb,在course schedule的c 提交中擊敗了18.08 的使用者 剛好看了劉汝佳老師的演算法競賽上面拓撲部分,想練練手。這個演算法的關鍵是flag訪問陣列中,使用了 1 0...
LeetCode題解 207 課程表
現在你總共有 n 門課需要選,記為 0 到 n 1。在選修某些課程之前需要一些先修課程。例如,想要學習課程 0 你需要先完成課程 1 我們用乙個匹配來表示他們 0,1 給定課程總量以及它們的先決條件,判斷是否可能完成所有課程的學習?示例 1 輸入 2,1,0 輸出 true 解釋 總共有 2 門課程...