LeetCode1615网络秩

文章介绍了如何理解网络秩的概念,即两座城市间直接相连的道路数,并通过示例解释了如何计算最大网络秩。方法包括使用二维数组存储城市对,一维数组记录每座城市的最大道路数,通过遍历和比较找到最大网络秩,同时利用memset初始化数组和布尔类型的connect矩阵来提高效率。最后,通过宏定义MAX找到最大值并返回。
摘要由CSDN通过智能技术生成

近几天刷到了这道题目,对于题干中给的网络秩什么的不太了解,于是花了挺长时间去了解,这篇文章也是帮助理解这道题目。

首先看看题目给的定义:

两座不同城市构成的 城市对网络秩 定义为:与这两座城市 直接 相连的道路总数。如果存在一条道路直接连接这两座城市,则这条道路只计算 一次

网络秩是针对两个城市,且一条道路直接连接两座城市只计算一次。

在这里如果看不懂这些名词,我们可以这么理解,网络秩就是让你求一个城市对总共所连接的道路,我们分析题目给的图

求最大网络秩,我们按图中说城市0和1,我们可以看见0城市有[0,1][0,3] 1城市有[1,0][1,2][1,3]

但是有“如果存在一条道路直接连接这两座城市,则这条道路只计算 一次”这个条件,所以[0,1]算一次。一共四条道路,即最大网络秩是4。

按照刚才分析,这张图里面城市1,2各自连接道路为3,已经最大了。然后一对重复,故最大网络秩为5。

我们按照这个思路可以分析出解题思路,我们先创建一个二维数组用来储存城市对

如connect[0][1]代表城市0和1,接着再创建一个一维数组用来储存每座城市所连接道路的最大数量。

如num[1],代表城市1所连接的道路最大数量。

题目要求求出最大数量,我们储存完之后,比较每个城市对的网络秩数量-1(重复一条),再输出最大的那一对,这道题目便可解决。

这里面为了增加效率,同时也为了方便先用memset直接将两个数组元素全赋值为0

然后for循环是为了计算每座城市相连道路数量,在此的connect数组返回类型是布尔类型,

下面的connect[x][y] = ture;代表城市x和y之间有道路,然后分别给每座城市连接的道路数量加一。

这就是第二部分:找出最大网络秩

这里-connect[i][j]?1:0 就与上面将元素赋值为true相呼应。如果这两座城市之间有重复道路则减一

这里的MAX(maxnum,rank)是用的宏定义

#define MAX(a, b) ((a) > (b) ? (a) : (b))

最后return最大的网络秩。大概思路就是这样

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我真的很困1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值