力扣刷題筆記:207. 課程表
題目:207. 課程表
寫題思路:
- 這是一題典型的拓撲排序
- 首先,我們根據題目意思,將課程關係做成鄰接矩陣,並儲存每個課程的入度
- 再建立佇列,儲存入讀為零的課程名,
- 進入迴圈(退出條件是佇列裡沒有元素)
- count 計數,u 儲存隊頭元素,並將隊頭元素pop,再接著把將u作為先修課的課程indeg–,
- 最後判斷count 與numCourses 的比較
原始碼
class Solution {
public:
bool canFinish(int numCourses, vector<vector<int>>& prerequisites) {
vector<vector<int>> edges;
vector<int> indeg;
edges.resize(numCourses);
indeg.resize(numCourses);
for(const auto& a : prerequisites){
edges[a[1]].push_back(a[0]);
++indeg[a[0]];
}
queue<int> q;
for(int i = 0; i < numCourses; ++i){
if(indeg[i] == 0){
q.push(i);
}
}
int vidited = 0;
while(!q.empty()){
++vidited;
int u = q.front();
q.pop();
for(int i : edges[u]){
--indeg[i];
if(indeg[i] == 0){
q.push(i);
}
}
}
return vidited == numCourses;
}
};
相關文章
- 207. 課程表
- 力扣刷題Python筆記:括號生成力扣Python筆記
- LeetCode 207. 課程表(Medium)LeetCode
- 力扣前1500道非會員題刷題筆記力扣筆記
- 力扣刷題——2306. 公司命名力扣
- 2024.09.22 力扣刷題 Z字形變換力扣
- 力扣刷題:100. 相同的樹力扣
- 力扣刷題-二分查詢力扣
- 力扣刷題-滑動視窗(字串)力扣字串
- python力扣刷題記錄——1470. 重新排列陣列Python力扣陣列
- python力扣刷題記錄——771. 寶石與石頭Python力扣
- 程式設計師如何玩轉力扣刷題?程式設計師力扣
- 力扣 (LeetCode) - Database-刷題626--換座位力扣LeetCodeDatabase
- python力扣刷題記錄——1614. 括號的最大巢狀深度Python力扣巢狀
- python力扣刷題記錄——1480. 一維陣列的動態和Python力扣陣列
- leetcode刷題筆記LeetCode筆記
- 刷題筆記02筆記
- 刷題筆記03筆記
- LeetCode 刷題筆記LeetCode筆記
- noip刷題筆記1筆記
- 【刷題筆記】2024.10.4 test筆記
- leetcode刷題筆記605LeetCode筆記
- 力扣題解力扣
- 物聯網課程筆記筆記
- 會計學課程筆記筆記
- lua課程學習筆記筆記
- 王道C短期課程筆記筆記
- leetcode刷題筆記(3)(python)LeetCode筆記Python
- 達內課程學習筆記筆記
- 機器學習課程筆記機器學習筆記
- 萬物互聯課程筆記筆記
- [Triton課程筆記] 2.2.3 BLS續筆記
- Python基礎課程筆記5Python筆記
- 力扣 (LeetCode) - Database-刷題183--從不訂購的客戶力扣LeetCodeDatabase
- 力扣刷題——3096.得到更多分數的最少關卡數目力扣
- 力扣刷題——2398. 預算內的最多機器人數目力扣機器人
- leetcode刷題筆記8.5-8.9LeetCode筆記
- Leetcode刷題筆記8.12-8.16LeetCode筆記