Friend Circles
来源:互联网 发布:ios屏蔽广告软件 编辑:程序博客网 时间:2024/05/29 14:45
1.问题描述
There are N students in a class. Some of them are friends, while some are not. Their friendship is transitive in nature. For example, if A is a direct friend of B, and B is a direct friend of C, then A is an indirect friend of C. And we defined a friend circle is a group of students who are direct or indirect friends.
Given a N*N matrix M representing the friend relationship between students in the class. If M[i][j] = 1, then the ith and jth students are direct friends with each other, otherwise not. And you have to output the total number of friend circles among all the students.
Example 1:
Input:
[[1,1,0],
[1,1,0],
[0,0,1]]
Output: 2
Explanation:The 0th and 1st students are direct friends, so they are in a friend circle.
The 2nd student himself is in a friend circle. So return 2.
Example 2:
Input:
[[1,1,0],
[1,1,1],
[0,1,1]]
Output: 1
Explanation:The 0th and 1st students are direct friends, the 1st and 2nd students are direct friends,
so the 0th and 2nd students are indirect friends. All of them are in the same friend circle, so return 1.
2求解思路
该题目其实是要求无向图中的连通分量数目.使用dfs深度优先搜索来求解.需要几次dfs则有几个连通分量.
3代码
class Solution {public: int findCircleNum(vector<vector<int>>& M) { if (M.empty()) return 0; int n = M.size(); vector<bool> visited(n, false); int groups = 0; for (int i = 0; i < visited.size(); i++) { groups += !visited[i] ? dfs(i, M, visited), 1 : 0; } return groups; }private: void dfs(int i, vector<vector<int>>& M, vector<bool>& visited) { visited[i] = true; for (int j = 0; j < visited.size(); j++) { if (i != j && M[i][j] && !visited[j]) { dfs(j, M, visited); } } }};
- 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
- Android图片处理框架之Glide学习使用
- 一.windows下Erlang和RabbitMQ的安装
- 事件监听(addEventListener())及其移除(removeEventListener)
- 【接口测试】接口mock之基础知识
- 我人生中的第一篇博客
- Friend Circles
- jdk 安装和eclipse 安装
- Eclipse对html和js代码自动提示
- Shell 流程控制
- angular2 开发 项目生成详解
- MFC——打开文件对话框
- 【线段树 && 区间增减】POJ 3468 A Simple Problem with Integers
- 平衡树(STL)——Luogu2073 送花
- LogService