日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

课程表—leetcode207

發(fā)布時間:2024/4/18 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 课程表—leetcode207 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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

思路:判斷有向無環(huán)圖,BFS

先把圖畫出來,用二維數(shù)組,relationMap[i][j]表示從i到j(luò)是不是依賴關(guān)系,并且算出每個節(jié)點的入度數(shù),即每個課程依賴課程的數(shù)量,之后再去用BFS判斷是否存在環(huán)

class Solution { public:bool canFinish(int numCourses, vector<vector<int>>& prerequisites) {if(prerequisites.empty())return true;int result = 0;vector<int> counts(numCourses,0);vector<vector<int>> relationMap(numCourses,vector<int>(numCourses));for(int i=0;i<prerequisites.size();++i){relationMap[prerequisites[i][1]][prerequisites[i][0]] = 1;counts[prerequisites[i][0]] +=1;}queue<int> que;for(int i=0;i<numCourses;++i){if(counts[i]==0){que.push(i);result++;}}while(!que.empty()){int top = que.front();que.pop();for(int i=0;i<numCourses;++i){if(relationMap[top][i]==1){counts[i]--;if(counts[i]==0){que.push(i);result++;}}}}return result==numCourses?true:false;} };

?

總結(jié)

以上是生活随笔為你收集整理的课程表—leetcode207的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。