news 2026/4/15 19:02:13

leetcode 2092(排序+bfs)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
leetcode 2092(排序+bfs)

2092: 找出知晓秘密的所有专家

思路:排序+bfs广度优先搜索

假设一开始 0 和 1 知道秘密。对比如下两种情况:

  • 时间 1,1 和 2 开会。时间 2,2 和 3 开会。秘密会传播给 2 和 3,最终 0,1,2,3 都知道秘密。
  • 时间 1,2 和 3 开会。时间 2,1 和 2 开会。第一场会议,参加会议的人都不知道秘密,所以秘密不会传播。秘密只会在第二场会议传播给 2,最终 0,1,2 都知道秘密。

所以要按照开会的先后顺序传播秘密,模拟这个过程。

注意题目的这段话:

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

解读:在同一时间发生的所有会议,可以视作一个无向图。专家是图中的节点,meetings[i] 是图的边,连接 xi 和 yi。这个图可能有多个连通块。每个连通块只要有一个人知道秘密,那么整个连通块的人都能知道秘密。

class Solution { public: vector<int> findAllPeople(int n, vector<vector<int>>& meetings, int firstPerson) { //按时间分组,同一时间的会议放一个 vector 里 map<int,vector<pair<int,int>>> met_time; for(auto& m:meetings) met_time[m[2]].emplace_back(m[0],m[1]); set<int> known{0,firstPerson}; //已知秘密的人 //按时间顺序处理,map容器自动升序排序 for(auto& [_,vec]:met_time){ unordered_map<int,vector<int>> g; set<int> nodes; //自动去重 //建图 for(auto& [u,v]:vec){ g[u].push_back(v); g[v].push_back(u); nodes.insert(u); nodes.insert(v); } //把当前时刻已知的所有人当起点做 BFS queue<int> q; for(int x:nodes) if(known.count(x)) q.push(x); while(!q.empty()){ int u=q.front();q.pop(); for(int v:g[u]){ if(!known.count(v)){ known.insert(v); q.push(v); } } } } vector<int> ans(known.begin(), known.end()); return ans; } };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 12:58:36

OpCore Simplify终极指南:从零构建完美Hackintosh的完整攻略

OpCore Simplify终极指南&#xff1a;从零构建完美Hackintosh的完整攻略 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 探索OpCore Simplify自动化工…

作者头像 李华
网站建设 2026/4/16 11:11:26

如何快速制作Windows启动盘:WindiskWriter完整使用指南

如何快速制作Windows启动盘&#xff1a;WindiskWriter完整使用指南 【免费下载链接】windiskwriter &#x1f5a5; A macOS app that creates bootable USB drives for Windows. &#x1f6e0; Patches Windows 11 to bypass TPM and Secure Boot requirements. 项目地址: ht…

作者头像 李华
网站建设 2026/4/16 11:11:50

FaceFusion与GraphCMS结合:GraphQL接口的灵活调用

FaceFusion与GraphCMS结合&#xff1a;GraphQL接口的灵活调用 在内容创作日益智能化的今天&#xff0c;一个编辑不再需要手动导出图像、运行Python脚本、再将结果上传回后台——理想的工作流应当是&#xff1a;她在CMS中选中两张照片&#xff0c;点击“生成”&#xff0c;几秒后…

作者头像 李华
网站建设 2026/4/16 0:46:14

快速掌握ghettoVCB:VMware备份终极配置指南

快速掌握ghettoVCB&#xff1a;VMware备份终极配置指南 【免费下载链接】ghettoVCB ghettoVCB 项目地址: https://gitcode.com/gh_mirrors/gh/ghettoVCB ghettoVCB是一款专为VMware ESXi环境设计的开源备份解决方案&#xff0c;提供轻量级虚拟机数据保护功能。这个强大的…

作者头像 李华
网站建设 2026/4/11 7:14:39

SonarQube的轻量替代:sourcefare,开源免费代码扫描工具

研发过程中&#xff0c;为了持续检测和改进代码质量&#xff0c;会使用一些代码扫描工具。例如SonarQube&#xff0c;SonarQube是一款代码质量管理工具&#xff0c;能通过静态分析检测代码缺陷、漏洞、重复和异味。但是部分语言收费&#xff0c;细粒度分支分析、安全扫描也需企…

作者头像 李华
网站建设 2026/4/12 10:52:06

Arbess安装配置:轻量CI/CD工具实操

Arbess是一款开源免费的CI/CD工具&#xff0c;支持免费私有化部署&#xff0c;一键安装零配置&#xff0c;通过内置的方式来提供常见任务&#xff0c;页面设计简洁明了&#xff0c;整体安装上手难度低。本文将介绍如何快速安装配置。 1、安装 Arbess 私有部署版本更适合有严格…

作者头像 李华