当前位置: 首页 > news >正文

【LeetCode每日一题】——1791.找出星型图的中心节点

文章目录

  • 一【题目类别】
  • 二【题目难度】
  • 三【题目编号】
  • 四【题目描述】
  • 五【题目示例】
  • 六【题目提示】
  • 七【解题思路】
  • 八【时空频度】
  • 九【代码实现】
  • 十【提交结果】

一【题目类别】

二【题目难度】

  • 简单

三【题目编号】

  • 1791.找出星型图的中心节点

四【题目描述】

  • 有一个无向的 星型 图,由 n n n 个编号从 1 1 1 n n n 的节点组成。星型图有一个 中心 节点,并且恰有 n − 1 n - 1 n1 条边将中心节点与其他每个节点连接起来。
  • 给你一个二维整数数组 e d g e s edges edges ,其中 e d g e s [ i ] = [ u i , v i ] edges[i] = [u_i, v_i] edges[i]=[ui,vi] 表示在节点 u i u_i ui v i v_i vi 之间存在一条边。请你找出并返回 e d g e s edges 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 < = 1 0 5 3 <= n <= 10^5 3<=n<=105
  • e d g e s . l e n g t h = = n − 1 edges.length == n - 1 edges.length==n1
  • e d g e s [ i ] . l e n g t h = = 2 edges[i].length == 2 edges[i].length==2
  • 1 < = u i , v i < = n 1 <= u_i, v_i <= n 1<=ui,vi<=n
  • u i ! = v i u_i != v_i ui!=vi
  • 题目数据给出的 e d g e s edges edges 表示一个有效的星型图

七【解题思路】

  • 该题需要利用图的基本性质,即度的概念
  • 根据题意,“星型图”的中心节点连接其余n - 1个节点
  • 所以“星型图”的中心节点的度为n - 1
  • 故只需要计算每个节点的度,度为n - 1的节点即为“星型图”的中心节点
  • 具体细节可以参考下面的代码
  • 最后返回结果即可

八【时空频度】

  • 时间复杂度: O ( n ) O(n) O(n) n n n为图中的节点数量
  • 空间复杂度: O ( n ) O(n) O(n) n n n为图中的节点数量

九【代码实现】

  1. Java语言版
class Solution {public int findCenter(int[][] edges) {// 获取节点数量int n = edges.length + 1;// 初始化数组,表示图中节点的度int[] degrees = new int[n + 1];// 计算图中每个节点的度for (int i = 0; i < edges.length; i++) {degrees[edges[i][0]]++;degrees[edges[i][1]]++;}// 若某个节点的度=节点数量-1,其即为星型图的中心节点for (int i = 1; i < degrees.length; i++) {if (degrees[i] == n - 1) {return i;}}return -1;}
}
  1. Python语言版
class Solution:def findCenter(self, edges: List[List[int]]) -> int:# 获取节点数量n = len(edges) + 1# 初始化数组,表示图中节点的度degrees = [0] * (n + 1)# 计算图中每个节点的度for x, y in edges:degrees[x] += 1degrees[y] += 1# 若某个节点的度=节点数量-1,其即为星型图的中心节点for index, degree in enumerate(degrees):if degree == n - 1:return index
  1. C语言版
int findCenter(int** edges, int edgesSize, int* edgesColSize)
{// 获取节点数量int n = edgesSize + 1;// 初始化数组,表示图中节点的度int* degrees = (int*)malloc(sizeof(int) * (n + 1));memset(degrees, 0, (n + 1) * sizeof(int));// 计算图中每个节点的度for (int i = 0; i < edgesSize; i++){degrees[edges[i][0]]++;degrees[edges[i][1]]++;}// 若某个节点的度=节点数量-1,其即为星型图的中心节点for (int i = 0; i < (n + 1); i++){if (degrees[i] == (n - 1)){return i;}}return -1;
}

十【提交结果】

  1. Java语言版
    在这里插入图片描述

  2. Python语言版
    在这里插入图片描述

  3. C语言版
    在这里插入图片描述


http://www.mrgr.cn/news/59650.html

相关文章:

  • 如何录屏?四款录屏软件实测对比
  • 【零售和消费品&软件包】快递包装类型检测系统源码&数据集全套:改进yolo11-HSPAN
  • 简单的udp程序
  • 群控系统服务端开发模式-应用开发-业务架构逻辑开发API建表
  • xss跨站及绕过与防护
  • zjy-sqlite-manage使用文档v1
  • C语言二刷指针篇
  • Linux基本指令(上)
  • 66AI论文:一键速写形势与政策论文,课程作业论文写作好助手
  • 查看数据库
  • leetcode hot100【LeetCode 199. 二叉树的右视图】java实现
  • 分享几个可以免费使用GPT的网站
  • 《欢乐饭米粒儿》持续热播:第四期小品笑中有思,引发观众共鸣
  • 基于Spring Boot的中小型医院网站的设计与实现源码(springboot)
  • 计算机组成原理之寻址方式、寻址方式中哪种最常用、寻址方式中哪种效率最高
  • 通过 SYSENTER/SYSEXIT指令来学习系统调用
  • XQT_UI 组件|01|颜色
  • 知识见闻 - Gearbest电商平台
  • 144. 二叉树的前序遍历 递归
  • 双子塔楼宇可视化系统:提升建筑管理与运营效率