LeetCode 207 課程表(拓撲排序)

2021-10-06 03:28:45 字數 1549 閱讀 1776

你這個學期必須選修 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 門課程...