给你一个整数 n ,表示有 n 个专家从 0 到 n - 1 编号。另外给你一个下标从 0 开始的二维整数数组 meetings ,其中 meetings[i] = [xi, yi, timei] 表示专家 xi 和专家 yi 在时间 timei 要开一场会。一个专家可以同时参加 多场会议 。最后,给你一个整数 firstPerson 。

专家 0 有一个 秘密 ,最初,他在时间 0 将这个秘密分享给了专家 firstPerson 。接着,这个秘密会在每次有知晓这个秘密的专家参加会议时进行传播。更正式的表达是,每次会议,如果专家 xi 在时间 timei 时知晓这个秘密,那么他将会与专家 yi 分享这个秘密,反之亦然。

秘密共享是 瞬时发生 的。也就是说,在同一时间,一个专家不光可以接收到秘密,还能在其他会议上与其他专家分享。

在所有会议都结束之后,返回所有知晓这个秘密的专家列表。你可以按 任何顺序 返回答案。

示例 1:

输入:n = 6, meetings = [[1,2,5],[2,3,8],[1,5,10]], firstPerson = 1
输出:[0,1,2,3,5]
解释:
时间 0 ,专家 0 将秘密与专家 1 共享。
时间 5 ,专家 1 将秘密与专家 2 共享。
时间 8 ,专家 2 将秘密与专家 3 共享。
时间 10 ,专家 1 将秘密与专家 5 共享。
因此,在所有会议结束后,专家 0、1、2、3 和 5 都将知晓这个秘密。

示例 2:

输入:n = 4, meetings = [[3,1,3],[1,2,2],[0,3,3]], firstPerson = 3
输出:[0,1,3]
解释:
时间 0 ,专家 0 将秘密与专家 3 共享。
时间 2 ,专家 1 与专家 2 都不知晓这个秘密。
时间 3 ,专家 3 将秘密与专家 0 和专家 1 共享。
因此,在所有会议结束后,专家 0、1 和 3 都将知晓这个秘密。

示例 3:

输入:n = 5, meetings = [[3,4,2],[1,2,1],[2,3,1]], firstPerson = 1
输出:[0,1,2,3,4]
解释:
时间 0 ,专家 0 将秘密与专家 1 共享。
时间 1 ,专家 1 将秘密与专家 2 共享,专家 2 将秘密与专家 3 共享。
注意,专家 2 可以在收到秘密的同一时间分享此秘密。
时间 2 ,专家 3 将秘密与专家 4 共享。
因此,在所有会议结束后,专家 0、1、2、3 和 4 都将知晓这个秘密。

示例 4:

输入:n = 6, meetings = [[0,2,1],[1,3,1],[4,5,1]], firstPerson = 1
输出:[0,1,2,3]
解释:
时间 0 ,专家 0 将秘密与专家 1 共享。
时间 1 ,专家 0 将秘密与专家 2 共享,专家 1 将秘密与专家 3 共享。
因此,在所有会议结束后,专家 0、1、2 和 3 都将知晓这个秘密。

提示:

  • 2 <= n <= 105
  • 1 <= meetings.length <= 105
  • meetings[i].length == 3
  • 0 <= xi, yi <= n - 1
  • xi != yi
  • 1 <= timei <= 105
  • 1 <= firstPerson <= n - 1

code:

class Solution {public List<Integer> findAllPeople(int n, int[][] meetings, int firstPerson) {Set<Integer> set = new HashSet<>(); // 知晓秘密的集合set.add(0);set.add(firstPerson);// List<Integer> res = new ArrayList<>();// 排序可以用一行来处理 Arrays.sort(meetings, (a, b)-> a[2] - b[2]);Arrays.sort(meetings, new Comparator<int[]>(){//二维数组按照某列进行排序,你也可以采用Map@Overridepublic int compare(int[] o1, int[] o2) {//这里根据第三列进行排序return o1[2] - o2[2];}} );for (int i = 0; i < meetings.length;){boolean isExist = false; // 开会人员中是否有知情教授int j = i;for (; j < meetings.length && meetings[j][2] == meetings[i][2] ; j++){if (set.contains(meetings[j][0])){set.add(meetings[j][1]);}if (set.contains(meetings[j][1])){set.add(meetings[j][0]);}}// 需要考虑逆序 就是比如[1,2,1],[2, 3, 1]// 先通知3的话 那么按照顺序添加的话 就会漏掉1 // 所以需要逆序再查找一遍for (int k = j - 1; k >= i ; k--){  // 反着再确认一次if (set.contains(meetings[k][0])){set.add(meetings[k][1]);}if (set.contains(meetings[k][1])){set.add(meetings[k][0]);}}i = j;}return new ArrayList<Integer>(set);}
}

5941. 找出知晓秘密的所有专家相关推荐

  1. LeetCode 2092. 找出知晓秘密的所有专家(并查集)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个整数 n ,表示有 n 个专家从 0 到 n - 1 编号. 另外给你一个下标从 0 开始的二维整数数组 meetings ,其中 meeting ...

  2. 找出知晓秘密的所有专家(leetcode 2092)

    题目描述 给你一个整数 n ,表示有 n 个专家从 0 到 n - 1 编号.另外给你一个下标从 0 开始的二维整数数组 meetings ,其中 meetings[i] = [xi, yi, tim ...

  3. 找出知晓秘密的所有专家

    题目描述 给你一个整数 n ,表示有 n 个专家从 0 到 n - 1 编号.另外给你一个下标从 0 开始的二维整数数组 meetings ,其中 meetings[i] = [xi, yi, tim ...

  4. 警惕AI军事间谍!找出导弹基地人类用2.5天,AI只要42分钟

    安妮 千平 编译整理 量子位 出品 | 公众号 QbitAI 就在我们的头顶之上,各种卫星(包括间谍卫星)像狗仔队一样,每天都围着地球疯狂拍下数十TB的照片.这个数量可以说是泛滥了. 每个情报机构都有 ...

  5. 3个月时间,5名黑客找出苹果55个漏洞,赚了5万多美元,还写了篇博客记录全程

    大数据文摘出品 作者:刘俊寰.朱科锦.lin 昨天,翘首期待的iPhone12终于面世,不管是回归经典方框设计,还是首次推出小屏mini版,都让苹果玩家大呼过瘾. 不过,在今年这场别开生面的发布会之前 ...

  6. 亡羊补牢or防患未然?在数百套多种数据库中找出风险点(附PPT下载)

    墨墨导读:2020数据技术嘉年华于11月21日落下帷幕,大会历时两天,来自全国各地的数据领域学术精英.领袖人物.技术专家.从业者和技术爱好者相聚北京,见证了个人的快速成长.技术的迭代进步.行业的蓬勃发 ...

  7. 一招教你玩转SQL:通过找出数据的共同属性实现SQL需求

    关注我们,下载更多资源 预告:12月22日,ACOUG 联合创始人及多位核心专家将欢聚一堂,为"关键词解析2018技术圈的那些事儿"为主题的分享讨论,欢迎大家踊跃报名参会. 点击& ...

  8. 核心微生物分析_基因测序找出肠道核心微生物群

    基因测序找出肠道核心微生物群 有助于建立评价标准判断多种疾病 2016-05-19科技日报 常丽君 [字体:大 中 小] 语音播报 人类肠道中有数以万亿计的微生物,也称为肠道菌群,与多种疾病如肠炎.肥 ...

  9. 太秀了!那个在 GitHub 用文言文编程的小哥,竟从 28 万行唐诗中找出了对称矩阵

    来自量子位 下面这张图,你能看出来,这首诗妙在哪里吗? 其实,横着读是一首诗,竖着读还是这首诗! 而且,这首诗可不是乱编的,其中的诗句都来自<全唐诗>,读起来也颇有意境. 创造这个奇妙组合 ...

最新文章

  1. 在SD/MMC卡上实现hive (Implement WinCE HIVEROM system on NAND or SD system )
  2. RocketMQ入门到入土(一)新手也能看懂的原理和实战!
  3. matlab 检测gpu,康奈尔大学使用MATLAB进行GPU性能测试
  4. 数字营销行业大数据平台云原生升级实战
  5. 一起学习C语言:初步进入编程世界(三)
  6. 【Android基础】页面跳转与传值(Activity跳转与传值)
  7. Linux mint 14下的powerDNS+mysql+powerAdmin搭建个性DNS域名解析服务器
  8. linux 共享内存区及进程间通信
  9. Spring AOP原理分析(三)-- AnnotationAwareAspectJAutoProxyCreator#initBeanFactory()源码
  10. python画中国的轮廓_利用python绘制中国地图(含省界、河流等)
  11. 土壤湿度计检测模块 土壤湿度传感器 机器人智能小车
  12. HTML 编辑器-网页制作是用什么来做的?-2
  13. 计算机打印错误,打印机错误正在打印处理方法,详细教您电脑打印机错误正在打印处理方法...
  14. Unity内动态影子的各种做法
  15. 数字音乐各种高保真音乐格式
  16. 基于Android系统的人脸识别签到软件
  17. Spring源码里开天辟地的五个Bean,再介绍一个学习方法
  18. Hutool 自定义excel导出
  19. matlab:使用四阶龙格库塔方法求解微分方程组
  20. 连续合数猜想(格林姆猜想)-突破性进展

热门文章

  1. 计算机屏幕闪烁黑屏,台式机电脑。显示屏指示灯一直闪烁,屏幕黑屏。。...-显示器电源灯闪黑屏...
  2. Zabbix - 微信报警
  3. JAVA-企业微信报警工具类
  4. RTMP、RTSP、m3u8、flv 区别及含义
  5. 找出符合要求的字符串子串
  6. 可喜可贺,暴雪即将收购第一家工作室Proletariat,魔法吃鸡停运
  7. Linux中阶—域名解析服务DNS(十)
  8. 二零二二,闯北十年,及时行乐,此生尽兴
  9. 如何快速实现西门子S7-200/300 PLC转Modbus-TCP协议与第三方数据对接
  10. 码工成长手册:刚毕业的程序员如何快速提升自己?