<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
題目連結:2360. 圖中的最長環
給你一個 n
個節點的 有向圖 ,節點編號為 0
到 n - 1
,其中每個節點 至多 有一條出邊。
圖用一個大小為 n
下標從 0
開始的陣列 edges
表示,節點 i
到節點 edges[i]
之間有一條有向邊。如果節點 i
沒有出邊,那麼 edges[i] == -1
。
請你返回圖中的 最長 環,如果沒有任何環,請返回 -1
。
一個環指的是起點和終點是 同一個 節點的路徑。
提示:
範例 1:
輸入: edges = [3,3,4,2,3]
輸出去: 3
解釋: 圖中的最長環是:2 -> 4 -> 3 -> 2 。
這個環的長度為 3 ,所以返回 3 。
範例 2:
輸入: edges = [2,-1,3,1]
輸出: -1
解釋: 圖中沒有任何環。
題目給定一張含有 n
個節點的 有向圖,且每個節點 至多 有一條出邊。
給定一個整數陣列 edges
,表示節點 i
到節點 edges[i]
之間有一條有向邊( i
指向 edges[i]
)。
規定如果節點 i
沒有出邊,那麼 edges[i] == -1
。
題目讓我們返回圖中 最長 的環,如果圖中不存在環返回 -1
。
因為該題所給的圖為有向圖,且每個節點至多隻有一條出邊,我們可以從任意一個節點出發,如果能夠到達 本輪 已經遍歷過的節點,那麼說明能夠構成一個新環。維護環的最大值即可。
那麼我們要怎麼記錄遍歷過的節點是否為本輪遍歷過的節點呢?
正確做法:利用一個時間戳來表示每個節點是第幾個被遍歷到的,那麼我們只需記錄本輪開始節點的時間戳,當遇到已經遍歷過的節點時判斷該節點的時間戳與本輪開始節點的時間戳大小關係即可:
初始化環的最大值為 -1
,期間不斷維護環的最大值即可,最後返回這個最大值即可。
n
為 edges
的長度,也就是點的個數。class Solution { public: int longestCycle(vector<int>& edges) { int n = edges.size(); // mp[i] = j 表示節點 i 是第 j 個遍歷到的 int mp[n]; memset(mp, 0, sizeof(mp)); int ans = -1; // k 進行計數 int k = 1; for(int i = 0; i < n; i++){ // 從沒有遍歷過的點作為起點 if(mp[i] == 0){ int t = i; // 找到第一個遍歷過的節點 while(mp[t] == 0){ mp[t] = k++; t = edges[t]; if(t == -1) break; } // 利用時間戳計算環的長度,取最大值 if(t != -1 && mp[t] >= mp[i]){ ans = max(ans, k - mp[t]); } } } return ans; } };
測試結果:
以上就是C C++ 題解LeetCode2360圖中的最長環範例的詳細內容,更多關於C C++ 圖中的最長環的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45