1791. 找出星型图的中心节点 : 简单模拟题(进阶到欧拉回路问题)

简介: 1791. 找出星型图的中心节点 : 简单模拟题(进阶到欧拉回路问题)

网络异常,图片无法展示
|


题目描述



这是 LeetCode 上的 1791. 找出星型图的中心节点 ,难度为 简单


Tag : 「模拟」


有一个无向的 星型 图,由 nn 个编号从 11nn 的节点组成。星型图有一个 中心 节点,并且恰有 n - 1n1 条边将中心节点与其他每个节点连接起来。


给你一个二维整数数组 edges ,其中 edges[i] = [u_i, v_i]edges[i]=[ui,vi] 表示在节点 u_iuiv_ivi 之间存在一条边。请你找出并返回 edges 所表示星型图的中心节点。


示例 1:


网络异常,图片无法展示
|


输入:edges = [[1,2],[2,3],[4,2]]
输出:2
解释:如上图所示,节点 2 与其他每个节点都相连,所以节点 2 是中心节点。
复制代码


示例 2:


输入:edges = [[1,2],[5,1],[1,3],[1,4]]
输出:1
复制代码


提示:


  • 3 <= n <= 10^53<=n<=105
  • edges.length == n - 1edges.length==n1
  • edges[i].length == 2edges[i].length==2
  • 1 <= u_i, v_i <= n1<=ui,vi<=n
  • u_i != v_iui!=vi
  • 题目数据给出的 edges 表示一个有效的星型图


模拟



根据题意,中心节点必然出现在所有的 edges[i]edges[i] 中,因此使用前两条边即可确定答案。


起始让 edges[0][0]edges[0][0]edges[0][1]edges[0][1] 作为答案候选,然后在 edges[1]edges[1] 关系中检查哪个候选出现过。


代码:


class Solution {
    public int findCenter(int[][] edges) {
        int a = edges[0][0], b = edges[0][1];
        if (a == edges[1][0] || a == edges[1][1]) return a;
        else return b;
    }
}
复制代码


  • 时间复杂度:O(1)O(1)
  • 空间复杂度:O(1)O(1)


进阶



显然,如果将每个 edges[i]edges[i] 看做两点之间的「双向边」的话,那么星型图为「欧拉图」,所有点的出度均等于入度。


容易将题拓展为求欧拉回路的问题:


给定星与星之间的距离,从某个星的位置出发,经过所有的边(可重复经过)并回到起点的最短距离,输出能够取得最短距离的路径(无解输出 -11


答案就是求「欧拉回路」,其中「可重复经过边」包含了「可重复经过点」的含义。


由于星星图存在中心点,必然有解(但为了题目描述的完整性,出题都会预设一个无解返回值);同时也不会重复经过某条边(仍然是为了题目描述完整性才这样写)。


最后



这是我们「刷穿 LeetCode」系列文章的第 No.1791 篇,系列开始于 2021/01/01,截止于起始日 LeetCode 上共有 1916 道题目,部分是有锁题,我们将先把所有不带锁的题目刷完。


在这个系列文章里面,除了讲解解题思路以外,还会尽可能给出最为简洁的代码。如果涉及通解还会相应的代码模板。


为了方便各位同学能够电脑上进行调试和提交代码,我建立了相关的仓库:github.com/SharingSour…


在仓库地址里,你可以看到系列文章的题解链接、系列文章的相应代码、LeetCode 原题链接和其他优选题解。

相关文章
|
9月前
|
弹性计算 关系型数据库 PolarDB
[PolarDB实操课] 03.使用PXD部署PolarDB企业版和标准版
本课程详细介绍了如何使用PXD工具部署PolarDB-X企业版和标准版。主要内容包括: 1. **PolarDB-X企业版与标准版的区别**:讲解了两者的架构特点、性能差异及适用场景。 2. **集群机器上安装Docker环境**:指导用户在阿里云ECS实例上安装Docker,确保后续部署顺利进行。 3. **部署机上安装PXD**:介绍如何配置密钥连接、安装Python3并激活虚拟环境,最后安装PXD工具。 4. **创建并部署PolarDB-X**:通过编写拓扑文件(YAML格式),一键拉起PolarDB-X集群,并验证部署状态。
170 0
|
弹性计算 人工智能 自然语言处理
【玩转AIGC系列】AIGC文本生成3D模型
本文介绍如何使用GPU云服务器搭建Stable Diffusion模型,并基于ModelScope框架和HRN人脸重建模型,实现使用文本生成3D模型。
【玩转AIGC系列】AIGC文本生成3D模型
|
传感器 存储 人工智能
STM32第一章-寄存器你懂吗?
嵌入式系统是小型计算机的一个分支系统。平常用的PC,就属于功能比较专一的计算机,从核心的处理器来说,可以分成嵌入式微处理器和嵌入式微控制器,我们传统意义上的那种单片机,比如说像51、AVR还有按里面比较低配的一些,比如说像Cortex-M系列的这一类,我们都把它划分为微控制器,微处理器呢,就相对来说处理能力,运算能力要强一些,比如ARM9以上的系列和 Cortex-A以及以上系列。STM32属于一个微控制器,请大家牢牢记住微控制器这四个字。STM32自带了各种常用通信接口,比如USART、I2C、SPI等,可接非常多的传感器,可以控制很多的设备。现实生活中,我们接触到的很多电器产品都有STM3
977 0
 STM32第一章-寄存器你懂吗?
|
安全 网络虚拟化
vlan划分详解
vlan划分详解
|
SQL 关系型数据库 MySQL
MySQL数据库索引失效的10种场景
MySQL数据库索引失效的10种场景
682 0
|
资源调度 运维 监控
SLS机器学习介绍(03):时序异常检测建模
虽然计算机软硬件的快速发展已经极大提高了应用程序的可靠性,但是在大型集群中仍然存在大量的软件错误和硬件故障。系统要求7x24小时不间断运行,因此,对这些系统进行持续监控至关重要。这就要求我们就被从系统中持续采集系统运行日志,业务运行日志的能力,并能快速的分析和监控当前状态曲线的异常,一旦发现异常,能第一时间将信息送到相关人员手中。
23728 0
SLS机器学习介绍(03):时序异常检测建模
|
存储 算法 安全
Cookie、Session、Token与JWT解析
Cookie、Session、Token与JWT解析
Cookie、Session、Token与JWT解析
|
机器学习/深度学习 数据采集 人工智能
五年落地超过八千家客户后,他们终于找到了AI规模化应用的完整方法论
AI 能力在产业端的规模化落地是否存在可能?第四范式用五年时间给出了答案——在金融、零售、医疗等行业领域积累了超过八千家行业客户 AI 落地业务经验。 “数据治理难、科学家稀缺、业务价值不佳以及算力成本负担重,是企业 AI 转型中四个最常见的坑,”第四范式创始人兼 CEO 戴文渊谈道,“这些问题归根结底是因为缺少基于规范和标准的基础设施。” 为此,他们从实战经验中提炼出一套完整方法论——从底层操作系统到基于自研 AI 加速卡的一体机,从模型开发工具到业务开发工具——并将其标准化地复制给更为广泛的产业客户与市场需求。
493 0
五年落地超过八千家客户后,他们终于找到了AI规模化应用的完整方法论
|
存储 消息中间件 缓存
基于 MaxCompute 的实时数据处理实践
MaxCompute 通过流式数据高性能写入和秒级别查询能力(查询加速),提供EB级云原生数仓近实时分析能力;高效的实现对变化中的数据进行快速分析及决策辅助。当前Demo基于近实时交互式BI分析/决策辅助场景,实现指标卡近实时BI分析、近实时市场监测、近实时趋势分析、近实时销量拆分功能。
652 0
基于 MaxCompute 的实时数据处理实践