leetcode547
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
leetcode547的更多相关文章
- [Swift]LeetCode547. 朋友圈 | Friend Circles
There are N students in a class. Some of them are friends, while some are not. Their friendship is t ...
- Leetcode547: Friend Circles 朋友圈问题
问题描述 在一个班级里有N个同学, 有些同学是朋友,有些不是.他们之间的友谊是可以传递的比如A和B是朋友,B和C是朋友,那么A和C也是朋友.我们定义 friend circle为由直接或者间接都是朋友 ...
- Leetcode547 朋友圈解题报告 (DFS
题目描述: 班上有 N 名学生.其中有些人是朋友,有些则不是.他们的友谊具有是传递性.如果已知 A 是 B 的朋友,B 是 C 的朋友,那么我们可以认为 A 也是 C 的朋友.所谓的朋友圈,是指所有朋 ...
- [Swift]经典解题思路:联合查找Union Find
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- 并查集算法Union-Find的思想、实现以及应用
并查集算法,也叫Union-Find算法,主要用于解决图论中的动态连通性问题. Union-Find算法类 这里直接给出并查集算法类UnionFind.class,如下: /** * Union-Fi ...
随机推荐
- 类中的迭代器__iter__
什么是迭代器 有iter()函数返回,可以通过next(it)函数取值的对象就是迭代器 迭代器协议 迭代器协议是指对象能够使用next函数获取下一项数据,在没有下一项数据时触发一个StopIterat ...
- BZOJ2565 最长双回文串 【Manacher】
BZOJ2565 最长双回文串 Description 顺序和逆序读起来完全一样的串叫做回文串.比如acbca是回文串,而abc不是(abc的顺序为"abc",逆序为"c ...
- timequest 中set input delay set output delay 的使用
set_input_delay/ set_output_delay TimeQuest出现以后,随之 set input delay 与 set output delay 也跟着出现,该约束命令用“外 ...
- .net SMTP 发送邮件
using System.Net.Mail; public static bool SendMail(string messTo,string messBody) { MailMessage mess ...
- 在MEF中实现延迟加载部件(转)
在MEF的宿主中,当我们通过Import声明导入的对象时,组装(Compose)的时候会创建该对象.例如: interface ILogger { void Log(string ...
- 如何查看你的 FastAdmin 服务器是否开启了 gzip br 压缩
如何查看你的 FastAdmin 服务器是否开启了 gzip 压缩 gzip br 压缩的好处不用多说了. 但是怎么方便的知道网站到底有没有开启或使用了 gzip 呢,其实只要在浏览器就可以看到. 按 ...
- guaua学习,工具专题
Preconditions 1,http://www.cnblogs.com/peida/p/Guava_Preconditions.html 1 .checkArgument(boolean) : ...
- 【备忘】windows环境下20行php代码搞定音频裁剪
先上图,由于最近的需求需要对语音文件进行处理,所以抽空研究了下php处理音/视频文件的处理,简单的demo处理,截取一个音频文件的前20秒,并保存新的媒体文件. 操作步骤: ①在此站点下载所需的辅助程 ...
- laravel验证器例子
直接贴测试代码 Route::get('/', function() { $name = "rico"; $validateData = array('name1' => $ ...
- 【Leetcode 167】Two Sum II - Input array is sorted
问题描述:给出一个升序排列好的整数数组,找出2个数,它们的和等于目标数.返回这两个数的下标(从1开始),其中第1个下标比第2个下标小. Input: numbers={2, 7, 11, 15}, t ...