LeetCode 2092. 找出知晓秘密的所有专家(并查集)
文章目錄
- 1. 題目
- 2. 解題
1. 題目
給你一個(gè)整數(shù) n ,表示有 n 個(gè)專(zhuān)家從 0 到 n - 1 編號(hào)。
另外給你一個(gè)下標(biāo)從 0 開(kāi)始的二維整數(shù)數(shù)組 meetings ,其中 meetings[i] = [xi, yi, timei] 表示專(zhuān)家 xi 和專(zhuān)家 yi 在時(shí)間 timei 要開(kāi)一場(chǎng)會(huì)。
一個(gè)專(zhuān)家可以同時(shí)參加 多場(chǎng)會(huì)議 。最后,給你一個(gè)整數(shù) firstPerson 。
專(zhuān)家 0 有一個(gè) 秘密 ,最初,他在時(shí)間 0 將這個(gè)秘密分享給了專(zhuān)家 firstPerson 。
接著,這個(gè)秘密會(huì)在每次有知曉這個(gè)秘密的專(zhuān)家參加會(huì)議時(shí)進(jìn)行傳播。更正式的表達(dá)是,每次會(huì)議,如果專(zhuān)家 xi 在時(shí)間 timei 時(shí)知曉這個(gè)秘密,那么他將會(huì)與專(zhuān)家 yi 分享這個(gè)秘密,反之亦然。
秘密共享是 瞬時(shí)發(fā)生 的。也就是說(shuō),在同一時(shí)間,一個(gè)專(zhuān)家不光可以接收到秘密,還能在其他會(huì)議上與其他專(zhuān)家分享。
在所有會(huì)議都結(jié)束之后,返回所有知曉這個(gè)秘密的專(zhuān)家列表。你可以按 任何順序 返回答案。
示例 1: 輸入:n = 6, meetings = [[1,2,5],[2,3,8],[1,5,10]], firstPerson = 1 輸出:[0,1,2,3,5] 解釋: 時(shí)間 0 ,專(zhuān)家 0 將秘密與專(zhuān)家 1 共享。 時(shí)間 5 ,專(zhuān)家 1 將秘密與專(zhuān)家 2 共享。 時(shí)間 8 ,專(zhuān)家 2 將秘密與專(zhuān)家 3 共享。 時(shí)間 10 ,專(zhuān)家 1 將秘密與專(zhuān)家 5 共享。 因此,在所有會(huì)議結(jié)束后,專(zhuān)家 0、1、2、3 和 5 都將知曉這個(gè)秘密。示例 2: 輸入:n = 4, meetings = [[3,1,3],[1,2,2],[0,3,3]], firstPerson = 3 輸出:[0,1,3] 解釋: 時(shí)間 0 ,專(zhuān)家 0 將秘密與專(zhuān)家 3 共享。 時(shí)間 2 ,專(zhuān)家 1 與專(zhuān)家 2 都不知曉這個(gè)秘密。 時(shí)間 3 ,專(zhuān)家 3 將秘密與專(zhuān)家 0 和專(zhuān)家 1 共享。 因此,在所有會(huì)議結(jié)束后,專(zhuān)家 0、1 和 3 都將知曉這個(gè)秘密。示例 3: 輸入:n = 5, meetings = [[3,4,2],[1,2,1],[2,3,1]], firstPerson = 1 輸出:[0,1,2,3,4] 解釋: 時(shí)間 0 ,專(zhuān)家 0 將秘密與專(zhuān)家 1 共享。 時(shí)間 1 ,專(zhuān)家 1 將秘密與專(zhuān)家 2 共享,專(zhuān)家 2 將秘密與專(zhuān)家 3 共享。 注意,專(zhuān)家 2 可以在收到秘密的同一時(shí)間分享此秘密。 時(shí)間 2 ,專(zhuān)家 3 將秘密與專(zhuān)家 4 共享。 因此,在所有會(huì)議結(jié)束后,專(zhuān)家 0、1、2、3 和 4 都將知曉這個(gè)秘密。示例 4: 輸入:n = 6, meetings = [[0,2,1],[1,3,1],[4,5,1]], firstPerson = 1 輸出:[0,1,2,3] 解釋: 時(shí)間 0 ,專(zhuān)家 0 將秘密與專(zhuān)家 1 共享。 時(shí)間 1 ,專(zhuān)家 0 將秘密與專(zhuān)家 2 共享,專(zhuān)家 1 將秘密與專(zhuān)家 3 共享。 因此,在所有會(huì)議結(jié)束后,專(zhuān)家 0、1、2 和 3 都將知曉這個(gè)秘密。提示: 2 <= n <= 10^5 1 <= meetings.length <= 10^5 meetings[i].length == 3 0 <= xi, yi <= n - 1 xi != yi 1 <= timei <= 10^5 1 <= firstPerson <= n - 1來(lái)源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/find-all-people-with-secret
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
2. 解題
參考:數(shù)據(jù)結(jié)構(gòu) 并查集
- 按時(shí)間對(duì)會(huì)議進(jìn)行排序
- 對(duì)相同時(shí)間進(jìn)行的會(huì)議進(jìn)行并查集合并操作,之后再次檢查,對(duì)不知道秘密的專(zhuān)家,撤銷(xiāo)合并操作(之前不知道這個(gè),導(dǎo)致一直超時(shí))
600 ms 130.9 MB C++
我的CSDN博客地址 https://michael.blog.csdn.net/
長(zhǎng)按或掃碼關(guān)注我的公眾號(hào)(Michael阿明),一起加油、一起學(xué)習(xí)進(jìn)步!
總結(jié)
以上是生活随笔為你收集整理的LeetCode 2092. 找出知晓秘密的所有专家(并查集)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: LeetCode 1580. 把箱子放进
- 下一篇: fastapi 安全性 / APIRou