[LeetCode] 547. Friend Circles 朋友圈

本题可以套用和 [LeetCode] 200. Number of Islands 岛屿的数量 与 [LeetCode 695] Max Area of Island 岛的最大面积一样的dfs模版,不同的是DFS的遍历路径不同,本题

采用的是类似十字遍历方式,具体见如下代码,本题同样可以使用BFS和并查集的方法解决,这里暂不讨论;

 1 /*
 2  * @Descripttion:
 3  * @version:
 4  * @Author: wangxf
 5  * @Date: 2019-12-20 15:21:49
 6  * @LastEditors: Do not edit
 7  * @LastEditTime: 2020-04-12 23:25:24
 8  */
 9 /*
10  * @lc app=leetcode.cn id=547 lang=cpp
11  *
12  * [547] 朋友圈
13  */
14
15 // @lc code=start
16 #include<bits/stdc++.h>
17 using namespace std;
18 class Solution {
19 public:
20     int findCircleNum(vector<vector<int>>& M)
21     {
22         int res = 0;
23         if(M.empty()||M.size()<=0) return 0;
24         for (size_t i = 0; i < M.size(); i++)
25             for (size_t j = 0; j < M[0].size(); j++)
26             {
27                 /*
28                 if(i==j)
29                 {
30                   //++res;
31                   continue;
32                 }
33                 */
34                 if(M[i][j]==1)
35                 {
36                     ++res;
37                     dfs(M,i,j);
38                 }
39             }
40         return res;
41     }
42     void dfs(vector<vector<int>>& M,int i,int j)
43     {
44         if(!(i>=0&&i<M.size()&&j>=0&&j<M[0].size()))
45         {
46             return;
47         }
48         if(M[i][j]==0)
49         {
50             return;
51         }
52         M[i][j]=0;
53         //if(i==j) return;
54
55         for(int r = 0;r<M.size();++r)
56         {
57             if(M[r][j]==1&&r!=i)
58             {
59                 dfs(M,r,j);
60             }
61         }
62         for(int c = 0;c<M[0].size();++c)
63         {
64             if(M[i][c]==1&&c!=j)
65             {
66                 dfs(M,i,c);
67             }
68         }
69         return;
70     }
71 };
72 // @lc code=end

原文地址:https://www.cnblogs.com/wangxf2019/p/12688668.html

时间: 2024-10-11 18:22:35

[LeetCode] 547. Friend Circles 朋友圈的相关文章

547 Friend Circles 朋友圈

班上有 N 名学生.其中有些人是朋友,有些则不是.他们的友谊具有是传递性.如果已知 A 是 B 的朋友,B 是 C 的朋友,那么我们可以认为 A 也是 C 的朋友.所谓的朋友圈,是指所有朋友的集合.给定一个 N * N 的矩阵 M,表示班级中学生之间的朋友关系.如果M[i][j] = 1,表示已知第 i 个和 j 个学生互为朋友关系,否则为不知道.你必须输出所有学生中的已知的朋友圈总数.示例 1:输入: [[1,1,0], [1,1,0], [0,0,1]]输出: 2 说明:已知学生0和学生1互

LeetCode 547. Friend Circles 20170626 补上周

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 fri

(BFS 持续更新) leetcode 547. Friend Circles

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 directfriend of B, and B is a direct friend of C, then A is an indirect friend of C. And we defined a frie

[LeetCode] Friend Circles 朋友圈

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 fri

[LeetCode] 547. Friend Circles

https://leetcode.com/problems/friend-circles public class Solution { int[] id; int[] weight; public int findCircleNum(int[][] M) { if (M == null || M.length == 0 || M[0].length == 0) { return 0; } initUnionFind(M.length); Set<Integer> set = new Hash

Leetcode之深度优先搜索(DFS)专题-547. 朋友圈(Friend Circles)

Leetcode之深度优先搜索(DFS)专题-547. 朋友圈(Friend Circles) 深度优先搜索的解题详细介绍,点击 班上有 N 名学生.其中有些人是朋友,有些则不是.他们的友谊具有是传递性.如果已知 A 是 B 的朋友,B 是 C 的朋友,那么我们可以认为 A 也是 C 的朋友.所谓的朋友圈,是指所有朋友的集合. 给定一个 N * N 的矩阵 M,表示班级中学生之间的朋友关系.如果M[i][j] = 1,表示已知第 i 个和 j 个学生互为朋友关系,否则为不知道.你必须输出所有学生

Leetcode 547.朋友圈

朋友圈 班上有 N 名学生.其中有些人是朋友,有些则不是.他们的友谊具有是传递性.如果已知 A 是 B 的朋友,B 是 C 的朋友,那么我们可以认为 A 也是 C 的朋友.所谓的朋友圈,是指所有朋友的集合. 给定一个 N * N 的矩阵 M,表示班级中学生之间的朋友关系.如果M[i][j] = 1,表示已知第 i 个和 j 个学生互为朋友关系,否则为不知道.你必须输出所有学生中的已知的朋友圈总数. 示例 1: 输入: [[1,1,0], [1,1,0], [0,0,1]] 输出: 2 说明:已知

LeetCode 朋友圈

班上有 N 名学生.其中有些人是朋友,有些则不是.他们的友谊具有是传递性.如果已知 A 是 B 的朋友,B 是 C 的朋友,那么我们可以认为 A 也是 C 的朋友.所谓的朋友圈,是指所有朋友的集合. 给定一个 N * N 的矩阵 M,表示班级中学生之间的朋友关系.如果M[i][j] = 1,表示已知第 i 个和 j 个学生互为朋友关系,否则为不知道.你必须输出所有学生中的已知的朋友圈总数. 示例 1: 输入: [[1,1,0], [1,1,0], [0,0,1]] 输出: 2 说明:已知学生0和

iOS Core Image-----十行代码实现微信朋友圈模糊效果

昨天下午微信的朋友圈着实火了一把,在这之后好多程序员都通过抓包工具看到了原图,但是我却在想,网上说是在移动前端做到的那是怎么做到的呢,经过一些学习,终于掌握了一些Core Image的知识,做出了相应的效果,仅仅十行代码 UIImageView * imgView = [[UIImageView alloc]init]; imgView.frame = CGRectMake(50, 50, 200, 200); [self.view addSubview:imgView]; UIImage *