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

最新文章

  1. jcFeather For Arnold
  2. Nginx基本使用
  3. angular-笔记
  4. [源码]ObjectIOStream 对象流 ByteArrayIOStream 数组流 内存流 ZipOutputStream 压缩流
  5. scrollHeight、scrollTop等的比较
  6. URL后面带\斜杠对SEO的影响
  7. [css]需警惕CSS3属性的书写顺序
  8. Git+GitHub 使用小结
  9. JAVA判断当前时间是上午am还是下午pm
  10. SVN global ignore pattern for c#
  11. Volley报错!!!No address associated with hostname
  12. Ecstore安装篇-1.运行系统环境要求
  13. list和map集合
  14. iOS 开发之 protocol Buffer 数据交换
  15. “《编程珠玑》(第2版)第2章”:B题(向量旋转)
  16. JSP指令与动作
  17. .NET之EntityFramework框架运用
  18. Linux发布WebApi
  19. js,css文件更新之后,浏览器端还有缓存,久久不能消除
  20. WPF中的DoubleAnimation

热门文章

  1. win10/ubuntu双系统卸载删除ubuntu系统
  2. 剑指offer第二章
  3. flask第十五篇——Response
  4. 完美解决github访问速度慢[转]
  5. Spring核心机制:依赖注入
  6. 去掉UIWebView上下滚动出边界时的黑色阴影
  7. 什么是spark(五)Spark SQL
  8. php mysql apache 的字符集
  9. 原生 Javascript 编写五子棋
  10. linux命令之awk