当前位置:网站首页>golang刷leetcode 经典(11) 朋友圈
golang刷leetcode 经典(11) 朋友圈
2022-08-02 18:54:00 【用户9710217】
班上有 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<len(M);i++{
if visited[i]==0{
count++
dfs(M,visited,i)
}
}
return count
}
func dfs(M[][]int,visited[]int,i int){
for j:=0;j<len(M[i]);j++{
if M[i][j]==1&&visited[j]==0{
visited[j]=1
dfs(M,visited,j)
}
}
}边栏推荐
猜你喜欢

研发了 5 年的时序数据库,到底要解决什么问题?

新公链时代的跨链安全性解决方案

Unity 打包和切换平台|Build Settings窗口介绍

Metaverse 001 | Can't control your emotions?The Metaverse is here to help you

EasyCVR平台通过国标GB28181接入柯达NVR显示注册失败,该如何解决?

斯堪尼亚SCANIA OTL标签介绍

【LeetCode】118. 杨辉三角 - Go 语言题解
![[Dynamic Programming Special Training] Basics](/img/62/a647783484d0e600f91924a345af07.png)
[Dynamic Programming Special Training] Basics

被审稿人吐槽没有novelty!深度学习方向怎么找创新点?

Based on OpenGL glaciers and firebird (illumination calculation model, visual, particle system)
随机推荐
Based on OpenGL glaciers and firebird (illumination calculation model, visual, particle system)
我靠这套笔记自学,拿下字节50万offer....
golang刷leetcode 经典(13) 最小高度树
流量分析第二题
移动跨端技术方案分析对比
Golang swagger :missing required param comment parameters
Monitor is easy to Mars debut: distributed operations help TOP3000 across management gap
情景剧《重走长征路》上演
Mppt光伏最大功率点跟踪控制matlab仿真
selenium installation and environment configuration firefox
【学习日记】win64配置openni的vs2022编译环境
洛谷P1966 火柴排队
What is the use of IT assets management software
音频隐写一
淘宝|蚂蚁|菜鸟|盒马|嘀嘀|饿了么面经(已拿多个offer)
Geoserver+mysql+openlayers
如何获取EasyCVR平台设备通道的RTMP视频流地址?
聊一聊 AS 的一些好用的功能
AI智能剪辑,仅需2秒一键提取精彩片段
快速掌握jmeter(一)——实现自动登录与动态变量