LeetCode 1101. 彼此熟识的最早时间(排序+并查集)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 1101. 彼此熟识的最早时间(排序+并查集)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 1. 題目
- 2. 解題
1. 題目
在一個社交圈子當中,有 N 個人。每個人都有一個從 0 到 N-1 唯一的 id 編號。
我們有一份日志列表 logs,其中每條記錄都包含一個非負整數的時間戳,以及分屬兩個人的不同 id,logs[i] = [timestamp, id_A, id_B]。
每條日志標識出兩個人成為好友的時間,友誼是相互的:如果 A 和 B 是好友,那么 B 和 A 也是好友。
如果 A 是 B 的好友,或者 A 是 B 的好友的好友,那么就可以認為 A 也與 B 熟識。
返回圈子里所有人之間都熟識的最早時間。如果找不到最早時間,就返回 -1 。
示例: 輸入:logs = [[20190101,0,1],[20190104,3,4],[20190107,2,3],[20190211,1,5],[20190224,2,4],[20190301,0,3],[20190312,1,2],[20190322,4,5]],N = 6 輸出:20190301 解釋: 第一次結交發生在 timestamp = 20190101,0 和 1 成為好友, 社交朋友圈如下 [0,1], [2], [3], [4], [5]。 第二次結交發生在 timestamp = 20190104,3 和 4 成為好友, 社交朋友圈如下 [0,1], [2], [3,4], [5]. 第三次結交發生在 timestamp = 20190107,2 和 3 成為好友, 社交朋友圈如下 [0,1], [2,3,4], [5]. 第四次結交發生在 timestamp = 20190211,1 和 5 成為好友, 社交朋友圈如下 [0,1,5], [2,3,4]. 第五次結交發生在 timestamp = 20190224,2 和 4 已經是好友了。 第六次結交發生在 timestamp = 20190301,0 和 3 成為好友,大家都互相熟識了。提示:1 <= N <= 100 1 <= logs.length <= 10^4 0 <= logs[i][0] <= 10^9 0 <= logs[i][1], logs[i][2] <= N - 1 保證 logs[i][0] 中的所有時間戳都不同 Logs 不一定按某一標準排序 logs[i][1] != logs[i][2]來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/the-earliest-moment-when-everyone-become-friends
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
2. 解題
參考數據結構:并查集
- 先按時間排序
- 按時間順序合并兩個人,檢查是否只有一個團,如果是,返回當前時間
244 ms 32.4 MB
- 或者,有效的合并 N-1次就完成了
240 ms 32.3 MB
我的CSDN博客地址 https://michael.blog.csdn.net/
長按或掃碼關注我的公眾號(Michael阿明),一起加油、一起學習進步!
總結
以上是生活随笔為你收集整理的LeetCode 1101. 彼此熟识的最早时间(排序+并查集)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Feature Engineering
- 下一篇: LeetCode 1064. 不动点(二