【刷题日记】1791. 找出星型图的中心节点

简介: 昨天加班比较晚来不及刷每日一题,今天加班也回来晚了点,但是看到是一个简单的图,那么还是刷刷吧

【刷题日记】1791. 找出星型图的中心节点

本次刷题日记的第 26 篇,力扣题为:【刷题日记】1791. 找出星型图的中心节点简单

一、题目描述:


昨天加班比较晚来不及刷每日一题,今天加班也回来晚了点,但是看到是一个简单的图,那么还是刷刷吧

image.png

据我所知,我身边的朋友都不会刷图相关的题,原因是因为面试不会考图,因为涉及图的题目编码量也会相对较大

但是我认为学会学好了图,其实在生活中能够解决很多问题,例如 城市最短近距离等等

咱们还是来认真看看题目

二、这道题考察了什么思想?你的思路是什么?

仔细看这道题,给我们透露了哪些重要的信息呢:

  • 这是一个无向图,节点和节点之后是没有箭头的,没有入度和出度一说
  • 无向图组成的图形是一个星型,意味着节点的数量总是比边的数量大 1 ,如果节点数量为 n,那么边的数量就为 n-1 , 反过来也一样
  • 通过题目给出的边的关系,我们找出中心节点

得到如上重要信息之后,我们可以思考一下,**在上述的情况中,什么才叫做中心节点呢?**我们可以如何用数字化的方式来进行定义呢?

咱们举一个例子来看看效果:

例如下面的这个星型图:

image.png

总共是 6 个节点, 5 条边 ,我们可以发现这 5 条边都会连接到中心节点,那么我们就不难想到节点的度,当然如果没有图论基础的话,可以去补充一下

简单理解就是,对于无向图,有多少个边某一节点连接,那么这个节点的度就是 边的个数

那么,基于上图,我们就知道

  • 4 节点的度是 5
  • 1 , 2, 3, 5, 6 节点的度都是 1

通过数据我们其实也明确了,我们只要找到一个节点的度,是等于边的条数的,那么就可以实现这个题解了


好,那么接下来就是将上述思路,进行翻译了

三、编码

根据上述逻辑和分析,我们就可以翻译成如下代码,翻译代码的时候需要注意我们计算节点度的方式,以及空间的开辟

编码如下:

func findCenter(edges [][]int) int {
    // 得到节点的数量,等于边的数量 + 1
    length := len(edges) + 1
    // 此处开辟的空间是 length+1 , 是因为节点的数字不是从 0 开始的,而是从 1 开始的
    g := make([]int,length+1)
    // 计算每一个节点的 度
    for _,e := range edges {
        g[e[0]]++
        g[e[1]]++
    }
    // 找到节点度为 节点数 -1 的节点,则这个节点就是中心节点
    for i,num := range g {
        if num == length-1{
            return i
        }
    }
    return -1
}

看了上述代码,我们需要注意在开辟空间存储节点对应的度的时候,咱们的索引是从 1 开始的,例如如果有 4 个节点的话,那么我们的开辟的帮助空间是 4 + 1

四、总结:

很明显,这里我们可以看出来时间复杂度是 O(n),因为需要遍历每一个节点,来判断节点的度是否符合我们的要求

空间复杂度也是  O(n) ,因为我们需要开辟节点个数 + 1 的帮助空间

原题地址:1791. 找出星型图的中心节点

今天就到这里,学习所得,若有偏差,还请斧正

欢迎点赞,关注,收藏

朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力

image.png

好了,本次就到这里

技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。

我是阿兵云原生,欢迎点赞关注收藏,下次见~


相关文章
|
3月前
|
存储 算法
数据结构与算法学习二二:图的学习、图的概念、图的深度和广度优先遍历
这篇文章详细介绍了图的概念、表示方式以及深度优先遍历和广度优先遍历的算法实现。
77 1
数据结构与算法学习二二:图的学习、图的概念、图的深度和广度优先遍历
|
1天前
|
搜索推荐 架构师 数据挖掘
架构实操:画好一张业务模型图
本文以SDK设计的角度分析了如何构建一张属于SDK的各个业务的模型图。
|
13天前
|
存储 算法 C++
【C++数据结构——图】图的邻接矩阵和邻接表的存储(头歌实践教学平台习题)【合集】
本任务要求编写程序实现图的邻接矩阵和邻接表的存储。需掌握带权有向图、图的邻接矩阵及邻接表的概念。邻接矩阵用于表示顶点间的连接关系,邻接表则通过链表结构存储图信息。测试输入为图的顶点数、边数及邻接矩阵,预期输出为Prim算法求解结果。通关代码提供了完整的C++实现,包括输入、构建和打印邻接矩阵与邻接表的功能。
39 10
|
6月前
画好一张架构图/业务图/流程图问题之如何让图结构更清晰问题如何解决
画好一张架构图/业务图/流程图问题之如何让图结构更清晰问题如何解决
108 1
|
8月前
|
Java C语言
【Java开发指南 | 第十二篇】Java循环结构
【Java开发指南 | 第十二篇】Java循环结构
39 2
|
机器学习/深度学习
离散数学_十章-图 ( 4 ):图的表示和图的同构
离散数学_十章-图 ( 4 ):图的表示和图的同构
456 0
|
测试技术 uml
再谈行为图
过了两周,在学术部门的指导下,我们又学习了一遍UML图,对行为图,结合机房收费系统和生活中的小例子,我又有了一些新的理解。
|
前端开发
前端学习案例3-寻找节点德后继3 原
前端学习案例3-寻找节点德后继3 原
63 0
前端学习案例3-寻找节点德后继3 原
LeetCode 1791. 找出星型图的中心节点
有一个无向的 星型 图,由 n 个编号从 1 到 n 的节点组成。星型图有一个 中心 节点,并且恰有 n - 1 条边将中心节点与其他每个节点连接起来。
97 0