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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

207-Course Schedule

發(fā)布時(shí)間:2024/8/24 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 207-Course Schedule 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

【題目】

   ?你有n門課程需要上,幾位0到n-1.

   ?有些課程需要一些預(yù)備課程,例如:上課程0前需要先上課程1,表示為對(duì)[0,1]

? ? ? ? 假設(shè)給你所有課程和這些課程的對(duì)關(guān)系,有可能上完所有課程嗎?

? ? ? ? 舉例:

? ? ? ? 2 , [[1,0]]

? ? ? ? 這有2個(gè)課程需要完成,完成課程1前需要完成課程0,所以是可能的。

? ? ? ? 2 , [[1,0],[0,1]]

? ? ? ? 這有2個(gè)課程需要完成,完成課程1前需要完成課程0,完成課程0前需要完成課程1,所以是不可能的。

【分析】

   ?1. 問(wèn)題可以抽象為圖的問(wèn)題,就是判斷圖里是否存在環(huán)

? ? ? ? 2. 解決方法:(拓?fù)渑判?#xff09;,求出所有點(diǎn)的入度,循環(huán)遍歷n(n為點(diǎn)個(gè)數(shù))次,每一次循環(huán)里判斷是否有點(diǎn)的入度  為0;若所有的點(diǎn)的入度都不為0,return false;

         ? ??反之,當(dāng)前點(diǎn)的入度置為-1,進(jìn)入下一次循環(huán);跳出循環(huán)后,return true

【算法實(shí)現(xiàn)】

public class Solution {public boolean canFinish(int numCourses, int[][] prerequisites) {List<Set<Integer>> ls = new ArrayList<Set<Integer>>();for(int i=0; i<numCourses; i++) {ls.add(new HashSet<Integer>());}for(int i=0; i<prerequisites.length; i++) {ls.get(prerequisites[i][1]).add(prerequisites[i][0]);}int[] preNum = new int[numCourses];for(int i=0; i<numCourses; i++) {Set<Integer> set = ls.get(i); Iterator<Integer> it = set.iterator();while(it.hasNext()) {preNum[it.next()]++;}}for(int i=0; i<numCourses; i++) {int j;for(j=0; j<numCourses; j++) {if(preNum[j]==0)break;}if(j==numCourses)return false;preNum[j] = -1;Set<Integer> set = ls.get(j);Iterator<Integer> it = set.iterator();while(it.hasNext()) {preNum[it.next()]--;}}return true;} }

?

轉(zhuǎn)載于:https://www.cnblogs.com/hwu2014/p/4518015.html

與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的207-Course Schedule的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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