leetcode中如何解决朋友圈的问题
发表于:2025-02-05 作者:千家信息网编辑
千家信息网最后更新 2025年02月05日,这篇文章将为大家详细讲解有关leetcode中如何解决朋友圈的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。班上有 N 名学生。其中有些人是朋友,有些则不是。他
千家信息网最后更新 2025年02月05日leetcode中如何解决朋友圈的问题
这篇文章将为大家详细讲解有关leetcode中如何解决朋友圈的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
班上有 N 名学生。其中有些人是朋友,有些则不是。他们的友谊具有是传递性。如果已知 A 是 B 的朋友,B 是 C 的朋友,那么我们可以认为 A 也是 C 的朋友。所谓的朋友圈,是指所有朋友的集合。
给定一个 N * N 的矩阵 M,表示班级中学生之间的朋友关系。如果M[i][j] = 1,表示已知第 i 个和 j 个学生互为朋友关系,否则为不知道。你必须输出所有学生中的已知的朋友圈总数。
示例 1:
输入: [[1,1,0], [1,1,0], [0,0,1]]输出: 2
说明:已知学生0和学生1互为朋友,他们在一个朋友圈。
第2个学生自己在一个朋友圈。所以返回2。
示例 2:
输入: [[1,1,0], [1,1,1], [0,1,1]]输出: 1
说明:已知学生0和学生1互为朋友,学生1和学生2互为朋友,所以学生0和学生2也是朋友,所以他们三个在一个朋友圈,返回1。
注意:
N 在[1,200]的范围内。
对于所有学生,有M[i][i] = 1。
如果有M[i][j] = 1,则有M[j][i] = 1。
解题思路
1,给定的矩阵可以看成图的邻接矩阵。这样我们的问题可以变成无向图连通块的个数。
2,计算连通块的算法有,深度优先,广度优先和并查集
3,思路都一样:将连通的部分染上色,直至没有连通的点,就得到了一个联通块。
4,遍历整个矩阵就得到了所有连通块。
代码实现:
func findCircleNum(M [][]int) int {
count:=0
visited:=make([]int,len(M))
for i:=0;i
if visited[i]==0{
count++
dfs(M,visited,i)
}
}
return count
}
func dfs(M[][]int,visited[]int,i int){
for j:=0;j
if M[i][j]==1&&visited[j]==0{
visited[j]=1
dfs(M,visited,j)
}
}
}
关于"leetcode中如何解决朋友圈的问题"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
朋友
学生
矩阵
问题
篇文章
输出
思路
更多
示例
输入
不错
实用
三个
个数
中学
中学生
之间
代码
内容
名学
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
平原服务器价格
成都网络安全的公司
上海企顶顶网络技术
奥讯网络技术有限公司
软件开发一定要学uml吗
外版手机如何连接谷歌服务器
华为人才学习数据库
sql数据库的备份与还原
服务器内存条回收
计算机用的数据库怎么查看
软件开发质量管理系统
校园超市收入数据库
服务器机柜有什么讲究
龙族数据库
百度seo快排软件开发
开州区一站式软件开发服务代理商
微信传照片会经过服务器吗
云舒网络安全
火灾风险数据库有哪些
山东省软件开发人月标准
周村crm软件开发
数据库主要数据库
软件开发小程序功能
苹果怎么老是连接不上服务器
河源本地服务器地址
数据库中物理模式和内模式
精算t3管理系统服务器是什么
初中网络安全手抄报漂亮简单带字
数据库原理 完整版
智力拼图游戏软件开发