Friend Circles
来源:互联网 发布:windows我的电脑图标 编辑:程序博客网 时间:2024/05/19 14:51
原题地址:点我传送
本质上是对一个领接矩阵做一个图的广度优先遍历,对每一个点,如果之前已经被遍历过,那么就已经存在于一个朋友圈中,无需再遍历。如果没有,则广度优先遍历并记录。最后的count便是答案。
C++:
class Solution {public: int findCircleNum(vector<vector<int>>& M) { int count = 0; bool *visited = new bool [M.size()]; for(int i=0;i<M.size();i++) { visited[i] = false; } list<int> L; for(int i=0;i<M.size();i++) { bool avail = false; if(!visited[i]) { L.push_back(i); visited[i]=true; avail = true; } while(L.size()) { int temp = L.front(); L.pop_front(); for(int j=0;j<M[temp].size();j++) { if(M[temp][j]&&!visited[j]) { L.push_back(j); visited[j] = true; } } } if(avail) count++; } return count; }};
使用了Queue容器的offer,poll,peak。
public class Solution { public int findCircleNum(int[][] M) { int count = 0; boolean visited[] = new boolean [M.length]; Queue<Integer> L = new LinkedList<Integer>(); for(int i=0;i<M.length;i++) { boolean avail = false; if(!visited[i]) { L.offer(i); visited[i]=true; avail = true; } while(L.size()!=0) { int temp = L.poll(); for(int j=0;j<M[temp].length;j++) { if((M[temp][j]!=0)&&(!visited[j])) { L.offer(j); visited[j] = true; } } } if(avail) count++; } return count; }}
0 0
- Friend Circles
- Friend Circles
- Friend Circles
- Friend Circles
- Friend Circles
- Friend Circles
- Friend Circles
- Friend Circles
- 【LeetCode】547. Friend Circles
- leetcode 547. Friend Circles
- leetcode 547. Friend Circles
- 547. Friend Circles
- leetcode547. Friend Circles
- leetcode-547. Friend Circles
- [LeetCode.547]Friend Circles
- 547. Friend Circles
- LeetCode 547. Friend Circles
- 【547】Friend Circles
- ionicPopup 屏蔽物理返回键的解决方案
- ewq
- 用Java swing写的一个个性化界面的音乐播放器
- opencv 连通域轮廓处理的一点记录
- OC中数组NSArray 和NSMutableArray学习总结
- Friend Circles
- java 引用算法 引用 可达性分析
- 整洁代码
- springmvc与struts2中获取request对象
- Java并发控制机制详解
- 混淆规则
- 北方大学 ACM 多校训练赛 第五场(D. 节操大师
- 初学者用什么数位板好,手绘板选择注意什么?
- 1.Django入门:从零开始-概览