leetcode中如何解决朋友圈的问题
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章将为大家详细讲解有关leetcode中如何解决朋友圈的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。班上有 N 名学生。其中有些人是朋友,有些则不是。他
千家信息网最后更新 2026年11月03日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:=0visited:=make([]int,len(M))for i:=0;iif visited[i]==0{count++dfs(M,visited,i)}}return count}func dfs(M[][]int,visited[]int,i int){for j:=0;jif M[i][j]==1&&visited[j]==0{visited[j]=1dfs(M,visited,j)}}}
关于"leetcode中如何解决朋友圈的问题"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
朋友
学生
矩阵
问题
篇文章
输出
思路
更多
示例
输入
不错
实用
三个
个数
中学
中学生
之间
代码
内容
名学
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
花魁咖啡
互联网和科技技术
互联网电商科技
互联网金融公司科技
美国互联网科技
以房互联网科技
齐家互联网科技
北京互联网络科技有限公司
佰商互联网科技有限公司
天速互联网络科技有限公司
济南华为互联网科技产业总部基地
新华互联网科技2019
黑科技闪耀互联网之光
呼和浩特新华互联网科技学院
深圳市罗太互联网科技有限公司
区块链结合互联网科技
山东有哪些互联网科技公司
沐思想互联网科技有限公司
互联网科技实习生岗位
互联网风格科技公司名称
互联网品科技
互联网与科技发展
万易互联网科技
金融科技和互联网金融
互联网巨头投资的硬核科技
新华互联网科技2019
福州新华互联网科技学校 知乎
互联网金融科技展
江苏互联网智能科技软件
广西泛欧互联网科技有限公司