/*
思路就是遍历所有人,对于每一个人,寻找他的好友,找到好友后再找这个好友的好友
,这样深度优先遍历下去,设置一个flag记录是否已经遍历了这个人。
其实dfs真正有用的是flag这个变量,因为如果m个人最多m个朋友圈,设置后flag后,相同的朋友圈会
检测到flag就会不算数。
*/
public int findCircleNum(int[][] M) {
int m = M.length;
if (m==0) return 0;
int res = 0;
boolean[] flag = new boolean[m];
for (int i = 0; i < m; i++) {
if (dfs(i,M,flag)>0)
res++;
}
return res;
}
public int dfs(int i,int[][] M,boolean[] flag){
if (flag[i]) return 0;
flag[i] = true;
int count = 1;
for (int j = 0; j < M.length; j++) {
if (i!=j&&M[i][j]==1)
count+=dfs(j,M,flag);
}
return count;
}

最新文章

  1. 关于Web服务器的认识
  2. JAVA Socket 实现HTTP与HTTPS客户端发送POST与GET方式请求
  3. 【wikioi】1217 借教室
  4. android XML解析器全解案例
  5. Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
  6. 类库dll引用不成功问题
  7. MyBatis 模糊查询
  8. [Swift]LeetCode647. 回文子串 | Palindromic Substrings
  9. 如何同时修改SharePoint帐号和AD帐号的密码 - 批量修改SharePoint Managed Account
  10. MySQL-记一次备份失败的排查过程
  11. android studio 设置安装不占用C盘
  12. [LeetCode] 619. Biggest Single Number_Easy tag: SQL
  13. echart 圆滑初始化化
  14. HBase源码分析之WAL
  15. JavaScript随机生成信用卡卡号的方法
  16. google中guava类库:AsyncEventBus
  17. Java处理正则表达式特殊字符转义 转
  18. 消除ADB错误“more than one device and emulator”的方法(转)
  19. Java集合--概述
  20. play-with-vim1~5

热门文章

  1. 论如何优雅的抛出SpringBoot注解的异常
  2. Django 的JsonResponse 与json
  3. 老猿学5G扫盲贴:中移动的5G计费架构中Nchf'服务化接口以及CHF中的AGF
  4. WindowsServer系统设置U盘引导及安装
  5. 在Centos7下docker配置自动化环境镜像(python3.7+selenium 3.11+firefox 62+geckodriver 0.21)
  6. 6种css3 transform图片悬停动态效果
  7. 认识 Cargo-Rust构建工具和包管理器
  8. 网络层-network layer(下):网络互连、子网掩码计算方法、Ipv4报头解析
  9. ThreadLocal原理记录,别被坑了!!
  10. Java集合源码分析(十)——TreeSet