亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Leetcode 207. Course Schedule

2019-11-10 18:17:22
字體:
來源:轉載
供稿:網友

There are a total of n courses you have to take, labeled from 0 to n - 1.

Some courses may have PRerequisites, for example to take course 0 you have to first take course 1, which is expressed as a pair: [0,1]

Given the total number of courses and a list of prerequisite pairs, is it possible for you to finish all courses?

For example:

2, [[1,0]] There are a total of 2 courses to take. To take course 1 you should have finished course 0. So it is possible.

2, [[1,0],[0,1]] There are a total of 2 courses to take. To take course 1 you should have finished course 0, and to take course 0 you should also have finished course 1. So it is impossible.

s思路: 1. 圖。描述兩者之間關系用edge表示,每個對象就是一個node。首先,把問題轉化成圖。 2. 看到圖,心里就打顫,遇到的少,心里沒底。也不是沒底,是深不可側,不見底。所以,需要先把心安好,既重視,更要看輕圖,才能學好圖。 3. 回到圖。先轉換圖,把每門課的所有先修課程和這門課連接起來,然后做dfs遍歷,看是否cycle,用dfs時,就要對每個節點是否visited做標記,而且dfs由于是recursive,和其他所有recursive一樣,都有層級之分。在dfs的visited數據結構,需要有三個狀態,不同與之前見過的兩個狀態表示是否訪問。三個狀態分別是:沒訪問,正在訪問但沒訪問完成,以及訪問完成?!罢谠L問但沒訪問完成”:表示從這個節點出發進入下一個層次去訪問,此時這個點確實被訪問了,但是這個點屬于現在正在訪問的path的一個節點;“訪問完成”表示當前點的下一個層次的遍歷以及完成,注意,下一個層次包括所有鄰接節點都訪問了,這個點才算訪問完。 4. 寫完dfs,發現圖的dfs的套路和backtracking一毛一樣,都是for+recursive。不同的就是,visited有3中狀態! 5. 按理說,能用dfs的也可以用bfs,只要能想辦法添加一些輔助量。圖的bfs和其他的bfs一樣,也是一層訪問完再訪問下一層,而且也用到queue。如果說dfs檢查是否有cycle這個操作就可以表面是否所有課都可以選,那么bfs需要做什么呢?看了答案,很有意思,仍然是檢查是否有cycle,但需利用圖論的知識:對每個節點的入度(indegree)統計,然后找到入度為0的所有點放在queue里,每次取出一個點,找到和其相連的所有節點,然后把這些節點的入度減一,表示刪除這條邊,如果某一次刪除,導致入度變成0,那么就把這個點加入queue,最后等queue為空后,再看所有點的入度是否全為0,如果全為0表示沒有cycle,否則有cycle。 6. 數學原因先不說。單說思路,仍然是找到邊界這個方法的應用。先統計所有入度,從入度為0的點入手,這里入度為0的點就是邊界。形象的說,一個圖的入讀為0的點在圖上也一定是在邊緣,只出不進,所以是邊緣。值得注意的是,如果沒有入度為0的點,說明這個圖的所有點都在loop內;然后刪除和這個點相連的節點之間的連接,同時入度減一,如果沒有cycle,最后一定可以把所有所有的入度變成0。所以,根據這個條件,就可以判斷是否有cycle了! 7. 比較一下dfs和bfs區別:dfs的過程是在模擬如何去遍歷這個圖的全過程;bfs則是模擬如何從圖的邊緣一步一步的把圖給“拆”掉,如果把能拆的都拆了,發現還有連線,那就是有cycle。一個是在沿路走;一個是在把正常的路拆了看留下啥!

//方法1:recursive. dfs,使用visited表示已經訪問。class Solution {public: bool dfs(vector<vector<int>>&graph,vector<int>&visited,int i){ //dfs:這個和backtracking套路一樣 if(visited[i]==2) return true;//完全訪問過 if(visited[i]==1) return false;//正在訪問,所以再次遇到表示有cycle visited[i]=1;//第一次訪問,所以置為1 for(int j=0;j<graph[i].size();j++){ if(!dfs(graph,visited,graph[i][j])) return false; } visited[i]=2; return true; } bool canFinish(int numCourses, vector<pair<int, int>>& prerequisites) { // vector<vector<int>> graph(numCourses); vector<int> visited(numCourses,0); //step 1: build graph for(auto p:prerequisites){ graph[p.first].push_back(p.second); } //step 2: dfs找cycle for(int i=0;i<numCourses;i++){ if(!dfs(graph,visited,i)) return false; } return true; }};//方法2:iterative,queue,統計入度class Solution {public: bool canFinish(int numCourses, vector<pair<int, int>>& prerequisites) { // vector<vector<int>> graph(numCourses); vector<int> indegree(numCourses,0); queue<int> QQ; //step 1: build graph for(auto p:prerequisites){ graph[p.first].push_back(p.second); indegree[p.second]++; } //step 2:找圖邊緣入度為0的點放入queue for(int i=0;i<numCourses;i++){ if(indegree[i]==0) qq.push(i); } //step 3:拆掉和入度零連接的線,入度減少 while(!qq.empty()){ int cur=qq.front(); qq.pop(); for(auto k:graph[cur]){ indegree[k]--; if(indegree[k]==0) qq.push(k); } } //step 4:看是否入度都為0 for(int i=0;i<numCourses;i++){ if(indegree[i]!=0) return false; } return true; }};
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩成人在线视频网站| 国产精品www色诱视频| 久久精品中文字幕免费mv| 国产大片精品免费永久看nba| 性欧美xxxx视频在线观看| 国产成人一区二| 亚洲欧美一区二区精品久久久| 欧美色videos| 亚洲午夜激情免费视频| 国产精品久久综合av爱欲tv| 久久亚洲精品中文字幕冲田杏梨| 这里只有视频精品| 日韩中文字幕在线视频| 日韩精品一二三四区| 欧美精品久久久久久久久久| 欧美大学生性色视频| 中日韩美女免费视频网址在线观看| 国产亚洲视频中文字幕视频| 成人av资源在线播放| 日韩毛片在线看| 欧美限制级电影在线观看| 亚洲精品小视频| www.日韩欧美| 欧美中文字幕在线| 亚洲男女性事视频| 92看片淫黄大片欧美看国产片| 亚洲片av在线| 91色中文字幕| 国产午夜精品理论片a级探花| 日本中文字幕不卡免费| 日韩有码在线播放| 九九热99久久久国产盗摄| 国产日产欧美精品| 亚洲香蕉成人av网站在线观看| 欧美性生交大片免费| 亚洲成av人片在线观看香蕉| 亚洲第一福利视频| 亚洲黄色成人网| 日韩精品免费看| 日韩电影免费观看在线观看| 精品综合久久久久久97| 国产精品一区二区三区久久久| 91在线视频一区| 国产伊人精品在线| 亚洲高清色综合| 成人性生交大片免费观看嘿嘿视频| 亚洲男人天天操| 国产区亚洲区欧美区| 国产欧美精品在线| 欧美中文字幕视频在线观看| 欧美在线视频网站| 久久青草精品视频免费观看| 成人网页在线免费观看| 国产精品主播视频| 91精品国产91久久久久久不卡| 国产精品久久国产精品99gif| 色悠久久久久综合先锋影音下载| 国产精品成久久久久三级| 亚洲综合在线做性| 国内精品视频在线| 亚洲欧美制服综合另类| 久久亚洲私人国产精品va| 欧美性极品xxxx做受| 欧美大尺度电影在线观看| 久久久久北条麻妃免费看| 国产一区二区三区直播精品电影| 国产精品99久久久久久www| 久久精品色欧美aⅴ一区二区| 国产精品av免费在线观看| 色妞色视频一区二区三区四区| 亚洲一区二区三| 在线视频日本亚洲性| 国产精品视频不卡| 91大神在线播放精品| 亚洲综合大片69999| 久久精品国产清自在天天线| 亚洲国产欧美一区二区三区同亚洲| 日韩经典第一页| 日韩av网站导航| 亚洲成人av在线| 国语自产精品视频在线看| 91在线播放国产| 国产精品自拍偷拍视频| 色婷婷久久av| 成人午夜高潮视频| 国内精品久久久久久久久| 国产精品久久久久久久久久免费| 欧美日韩国产成人| 国产亚洲欧美日韩美女| 欧美日韩国产一区中文午夜| 精品调教chinesegay| 欧美有码在线观看视频| 91在线观看免费高清完整版在线观看| 一本大道香蕉久在线播放29| 91中文在线观看| 欧美日韩性生活视频| 一区二区三区四区在线观看视频| 日韩美女写真福利在线观看| 国产欧美一区二区三区在线看| 亚洲综合色激情五月| 亚洲视频自拍偷拍| 性欧美办公室18xxxxhd| 精品国产一区二区三区久久狼黑人| 欧美日韩成人在线观看| 国产精品久久久久久影视| 国产欧美日韩中文| 国产精品美女主播在线观看纯欲| 久久久久久噜噜噜久久久精品| 精品久久久国产| 国产欧美精品一区二区三区-老狼| 伊人青青综合网站| 国产精品2018| 国产一区香蕉久久| 欧美又大粗又爽又黄大片视频| 欧美理论电影在线播放| 人人澡人人澡人人看欧美| 欧美电影在线免费观看网站| 2019国产精品自在线拍国产不卡| 精品日本美女福利在线观看| 日韩精品一区二区视频| 国产精品十八以下禁看| 国产欧美精品久久久| 92看片淫黄大片欧美看国产片| 日韩电影中文字幕在线| 亚洲欧美国产一本综合首页| 亚洲一区二区三区xxx视频| 国产精品丝袜久久久久久高清| 91福利视频网| 欧美激情区在线播放| 亚洲成人激情小说| 亚洲激情电影中文字幕| 日韩毛片在线看| 日韩精品在线影院| 欧美天堂在线观看| 九九九久久久久久| 国产精品男女猛烈高潮激情| 91精品国产高清久久久久久久久| 欧美午夜无遮挡| 国产色婷婷国产综合在线理论片a| 亚洲精品国产福利| 日韩小视频在线观看| 久久视频免费在线播放| 欧美日韩中文在线观看| 九九热在线精品视频| 中文字幕欧美在线| 久久久天堂国产精品女人| 日韩美女av在线免费观看| 欧美激情精品久久久久久蜜臀| 亚洲欧美日韩精品久久| 亚洲成人免费网站| 久久久影视精品| 欧美日韩免费区域视频在线观看| 久久精品国产一区二区电影| 91精品国产99久久久久久| 欧美激情一级二级| 色噜噜久久综合伊人一本| 国内外成人免费激情在线视频网站| 成人福利在线观看| 欧美激情在线观看| 国产区亚洲区欧美区| 欧美性高潮床叫视频| 欧美乱妇高清无乱码| 国产精品久久久久久婷婷天堂| 久久久久日韩精品久久久男男|