leetcode547
2024-08-27 21:05:29
public class Solution {
private void dfs(int[,] M, int[] visited, int i)
{
for (int j = ; j < M.GetLength(); j++)
{
if (M[i, j] == && visited[j] == )
{
visited[j] = ;
dfs(M, visited, j);
}
}
}
public int FindCircleNum(int[,] M)
{
int[] visited = new int[M.GetLength()];
int count = ;
for (int i = ; i < M.GetLength(); i++)
{
if (visited[i] == )
{
dfs(M, visited, i);
count++;
}
}
return count;
}
}
这是第一种方法,主要是使用dfs来实现。
下面是第二种方法,是同学用python写的,我翻译成了C#,这种思路是union find。
public class Solution {
public int FindCircleNum(int[,] M)
{
var N = M.GetLength();
var groups = N;
var leads = new int[N];
for (var i = ; i < N; i++)
{
leads[i] = i;
} for (var i = ; i < N; i++)
{
for (var j = i + ; j < N; j++)
{
if (M[i, j] == )
{
var lead1 = find(i, leads);
var lead2 = find(j, leads);
if (lead1 != lead2)
{
leads[lead1] = lead2;
groups--;
}
}
}
}
return groups;
} private int find(int x, int[] parents)
{
if (parents[x] == x)
{
return x;
}
else
{
return find(parents[x], parents);
}
}
}
从耗时角度来看,第一种效率略高一些。
https://leetcode.com/problems/friend-circles/#/description
最新文章
- jcFeather For Arnold
- Nginx基本使用
- angular-笔记
- [源码]ObjectIOStream 对象流 ByteArrayIOStream 数组流 内存流 ZipOutputStream 压缩流
- scrollHeight、scrollTop等的比较
- URL后面带\斜杠对SEO的影响
- [css]需警惕CSS3属性的书写顺序
- Git+GitHub 使用小结
- JAVA判断当前时间是上午am还是下午pm
- SVN global ignore pattern for c#
- Volley报错!!!No address associated with hostname
- Ecstore安装篇-1.运行系统环境要求
- list和map集合
- iOS 开发之 protocol Buffer 数据交换
- “《编程珠玑》(第2版)第2章”:B题(向量旋转)
- JSP指令与动作
- .NET之EntityFramework框架运用
- Linux发布WebApi
- js,css文件更新之后,浏览器端还有缓存,久久不能消除
- WPF中的DoubleAnimation