【LeetCode每日一题】310. 最小高度树

文章目录

    • [310. 最小高度树](https://leetcode.cn/problems/minimum-height-trees/)
          • 思路:拓扑排序
          • 代码:


310. 最小高度树

在这里插入图片描述
在这里插入图片描述

思路:拓扑排序
  1. 首先判断节点数量n,如果只有一个节点,则直接返回该节点作为最小高度树的根节点。
  2. 构建邻接表g和度数数组degree:
    • 使用邻接表g存储每个节点的相邻节点。
    • 使用度数数组degree存储每个节点的度数(即相邻节点的数量)。
  3. 遍历边数组edges,构建邻接表g和更新度数数组degree:
    • 对于每条边[e[0], e[1]],将节点e[0]与节点e[1]互相添加到各自的邻接表中,同时更新它们的度数。
  4. 初始化队列q,并将所有叶子节点(度数为1的节点)加入队列:
    • 遍历所有节点,将度数为1的节点加入队列q。
  5. 使用BFS遍历叶子节点层级,不断更新度数并将新的叶子节点加入队列:
    • 从队列中取出当前层级的叶子节点,更新其相邻节点的度数。
    • 若相邻节点的度数更新为1,则将其加入队列q。
  6. 最终队列中剩下的节点即为最小高度树的根节点列表,将其返回作为结果。
代码:
class Solution {public List<Integer> findMinHeightTrees(int n, int[][] edges) {// 如果只有一个节点,直接返回该节点if (n == 1) {return List.of(0);}// 构建邻接表List<Integer>[] g = new List[n];Arrays.setAll(g, k -> new ArrayList<>());int[] degree = new int[n]; // 存储每个节点的度数for (int[] e : edges) {int a = e[0], b = e[1];g[a].add(b);g[b].add(a);++degree[a];++degree[b];}Deque<Integer> q = new ArrayDeque<>();// 将所有叶子节点(度数为1)加入队列for (int i = 0; i < n; ++i) {if (degree[i] == 1) {q.offer(i);}}List<Integer> ans = new ArrayList<>();while (!q.isEmpty()) {ans.clear(); // 清空结果列表// 遍历当前层的节点for (int i = q.size(); i > 0; --i) {int a = q.poll();ans.add(a); // 将当前节点加入结果列表// 更新与当前节点相邻的节点的度数for (int b : g[a]) {if (--degree[b] == 1) {q.offer(b); // 若更新后度数为1,则加入队列}}}}return ans; // 返回最终结果列表}
}

点击移步博客主页,欢迎光临~

偷cyk的图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/753257.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里云ECS服务器u1通用算力型CPU性能、限制使用及收费价格表

阿里云服务器u1是通用算力型云服务器&#xff0c;CPU采用2.5 GHz主频的Intel(R) Xeon(R) Platinum处理器&#xff0c;通用算力型u1云服务器不适用于游戏和高频交易等需要极致性能的应用场景及对业务性能一致性有强诉求的应用场景(比如业务HA场景主备机需要性能一致)&#xff0c…

【解读】Gartner 2023 DevOps平台魔法四象限

2023年6月5日Gartner发布了DevOps平台魔法四象限洞察报告&#xff08;Magic Quadrant for DevOps Platforms DevOps&#xff09;&#xff0c;Gartner指出&#xff0c;DevOps平台正在成为DevOps工具链的一种更简单的替代品&#xff0c;为组织提供一套整合的集成能力。软件工程领…

Python:文件的操作

注意&#xff1a;本文引用自专业人工智能社区Venus AI 更多AI知识请参考原站 &#xff08;[www.aideeplearning.cn]&#xff09; Python的os库主要用于与操作系统进行交互&#xff0c;它提供了多种功能&#xff0c;使得在Python程序中处理操作系统级任务变得容易。这里是一些…

【Linux】Ubuntu使用Netplan配置静态/动态IP

1、说明 Ubuntu 18.04开始,Ubuntu和Debian移除了以前的ifup/ifdown命令和/etc/network/interfaces配置文件,转而使用ip link set或者/etc/netplan/01-netcfg.yaml模板和sudo netplan apply命令实现网络管理。 Netplan 是抽象网络配置描述器,用于配置Linux网络。 通过netpla…

2024全新快递平台系统独立版小程序源码|带cps推广营销流量主+前端

2024全新快递平台系统独立版小程序源码|带cps推广营销流量主前端程序源码 程序介绍 快递代发快递代寄寄件小程序可以对接易达云洋一级总代 快递小程序&#xff0c;接入云洋/易达物流接口&#xff0c;支持选择快递公司&#xff0c;三通一达&#xff0c;极兔&#xff0c;德邦等&…

适口性猫粮哪个牌子肉源好性价比高?主食冻干性价比排行前十分享

随着科学养猫知识的普及&#xff0c;主食冻干喂养越来越受到养猫人的青睐。主食冻干不仅符合猫咪的饮食天性&#xff0c;还能提供均衡的营养&#xff0c;有助于维护猫咪的口腔和消化系统健康。然而&#xff0c;许多猫主人在选择主食冻干产品时感到迷茫。本文将深入探讨如何为猫…

蓝桥杯刷题 Day36 倒计时26天 纯练题的一天

[蓝桥杯 2022 省 B] 积木画 题目描述 小明最近迷上了积木画&#xff0c;有这么两种类型的积木&#xff0c;分别为 I 型&#xff08;大小为 2个单位面积) 和 L 型 (大小为 3 个单位面积): 同时&#xff0c;小明有一块面积大小为2N 的画布&#xff0c;画布由2N 个 11 区域构成。…

一些很实用的技巧提高自动化测试覆盖率

自动化测试一直是测试人员的核心技能&#xff0c;也是测试的重要手段之一。尤其是在今年所谓的互联网寒冬的行情下&#xff0c;各大企业对测试人员的技术水平要求的很高&#xff0c;而测试人员的技术水平主要集中在三大自动化测试领域&#xff0c;再加测试辅助脚本的编写&#…

大模型知识积累——幻觉

什么是大模型幻觉 在大语言模型的文本生成场景下&#xff0c;幻觉是指一本正经的胡说八道。逻辑连贯的自然表述中&#xff0c;有理论或者事实错误&#xff0c;捏造事实等问题。 幻觉问题的危害 LLM幻觉可能产生传播错误知识的后果。对于医疗应用中结果安全和可信AI尤为重要&a…

气液分离器的概念和原理

气液分离器也叫低压储液器&#xff0c;在热泵或制冷系统中使用&#xff0c;主要是将出蒸发器、进压缩机气流中的液滴分离出来&#xff0c;防止压缩机发生液击&#xff0c;用于工质充注量较大、压缩机进气可能带液且压缩机对湿压缩较敏感的情况 。 液击主要出现在活塞式压缩机中…

PMP能两周快速通过吗?

两周时间有点赶&#xff0c;一般备考要2个月左右&#xff0c;有时间尽量多准备准备。 分享一篇左羊学霸的备考总结&#xff0c;希望能帮你 前言 作为⼀名通过PMP项⽬管理认证并且拿到3A成绩 ( PMP认证最好成绩) 的 学习者&#xff0c; 来跟⼤家分享下我考取PMP证书的动机与过程…

学会Python爬虫只需9步

爬虫是一种技术实现的功能&#xff0c;大部分编程语言都可以实现爬虫&#xff0c;但是对于初学者来说&#xff0c;想要快速学习爬虫技术&#xff0c;建议大家学习Python爬虫。Python编程语言相对于Java要更简单入门更容易&#xff0c;同时相对PHP使用范围更广泛&#xff0c;有利…

用户需求助力产品创新 4大注意事项

通过用户需求进行产品创新&#xff0c;是项目应遵循的原则&#xff0c;也是项目成功的关键因素之一。通过深入理解用户需求&#xff0c;有助于明确产品功能和定位&#xff0c;使得产品更符合用户期望。有助于树立正确的创新方向&#xff0c;推动企业的发展。如果不了解用户需求…

软件工程-第2章 软件过程

开发逻辑&#xff0c;是正确获取软件的关键。 2.1 软件生存周期过程 编程之前的工作。软件生存周期是软件产品或系统的一系列相关活动的全周期。95年发布国际标准&#xff0c;“ISO/IEC软件生存周期过程12207-1995”&#xff0c;给出了软件开发需要的任务&#xff0c;即回答了…

WIN10系统不定时蓝屏,终止代码:KERNEL_DATA_INPAGE_ERROR,且无法保存蓝屏日志解决办法

程序代码园发文地址&#xff1a;WIN10系统不定时蓝屏&#xff0c;终止代码&#xff1a;KERNEL_DATA_INPAGE_ERROR&#xff0c;且无法保存蓝屏日志解决办法-程序代码园小说,Java,HTML,Java小工具,程序代码园,http://www.byqws.com/ ,WIN10系统不定时蓝屏&#xff0c;终止代码&am…

汽车电子零部件(6):DMS/OMS、CMS

前言: 有一个部件过去不曾有,而如今有可能要标准化标配化,那就是Driver Monitoring System (DMS)驾驶员监控系统、Occupant Monitoring System (OMS)乘客监控系统和Camera Monitor System(CMS)摄像头监控系统。 汽车视觉技术的创新推动先进驾驶辅助系统的变革(ADAS),并…

2024年3月的计算机视觉论文推荐

从去年开始&#xff0c;针对LLM的研究成为了大家关注的焦点。但是其实针对于计算机视觉的研究领域也在快速的发展。每周都有计算机视觉领域的创新研究&#xff0c;包括图像识别、视觉模型优化、生成对抗网络(gan)、图像分割、视频分析等。 我们今天来总结一下2024年3月上半月份…

了解常用开发模型 -- 瀑布模型、螺旋模型、增量与迭代、敏捷开发

目录 瀑布模型 开发流程 开发特征 优缺点 适用场景 螺旋模型 开发流程 开发特征 优缺点 适用场景 增量与迭代开发 什么是增量开发&#xff1f;什么是迭代开发&#xff1f; 敏捷开发 什么是敏捷开发四原则&#xff08;敏捷宣言&#xff09;&#xff1f; 什么是 s…

从0开始写一个问卷调查APP的第11天

1.今日任务 分析:上次我们实现了从数据库中成功的查找到对应问卷的问题并在前端展示出来&#xff0c;那么今天我们增加难度。在数据库中插入多项选择问题&#xff0c;在接口中查找到并在前端显示出来。 2.实现 2.1数据库中插入测试数据 我们先查看一下表的结构 2.2接口实现…

代码随想录阅读笔记-哈希表【三数之和】

题目 给你一个包含 n 个整数的数组 nums&#xff0c;判断 nums 中是否存在三个元素 a&#xff0c;b&#xff0c;c &#xff0c;使得 a b c 0 &#xff1f;请你找出所有满足条件且不重复的三元组。 注意&#xff1a; 答案中不可以包含重复的三元组。 示例&#xff1a; 给定数…