假设有A,B,C,D,E,5个人A,B在一个朋友圈内,B,C在一个朋友圈内,这样A,B,C就在一个朋友圈内,总共有多少个朋友圈。
当人数较多时不容易算出。
可以利用数据结构查并集
设5个人的初值为-1,用数组下标代替A,B,C,D,E

A,B在一个朋友圈,设A为根,B的值替换为A的下标,将A,B合并,A加上B本身的值为-2代表朋友圈内有两个人,当所取得值为负数时为根,为正数时代表所在朋友圈根的系数。

B,C在一个朋友圈,B的值为0不是负数,所以不是根,下标为0的数是-2,是根,将他们合并。

最后为负数的有三个A,D,E,因为B,C的值为0,所以B,C属于A朋友圈,所以总共有三个朋友圈ABC 和 D和E。

#include <iostream>
#include <vector>using namespace std;class UnionSet {
public:UnionSet(size_t n):_ufs(n, -1){ }int Getparent(size_t index){int parent = index;while (_ufs[parent] >= 0){parent = _ufs[parent];}return parent;}bool IsUnion(size_t index1, size_t index2){return Getparent(index1) == Getparent(index2);}void Union(size_t index1, size_t index2){size_t root1 = Getparent(index1);size_t root2 = Getparent(index2);if (root1 != root2){_ufs[root1] += _ufs[root2];_ufs[root2] = root1;}}size_t Size() //返回有多少个集合{size_t count = 0;for (int i = 0; i < _ufs.size(); ++i){if (_ufs[i] < 0)count++;}return count;}
private:vector<int> _ufs;
};int main()
{UnionSet un(5);un.Union(0, 1);un.Union(1, 2);cout << un.Size() << endl;
}

查并集(朋友圈问题)相关推荐

  1. 测试面试题-如何测试朋友圈

    相信玩过微信朋友圈儿的人大家应该都知道它: a.发.删朋友圈,看朋友圈, b.发送的朋友圈的类型(图.文.图文混合.图文小视频混合等) c.评论朋友圈 d.朋友圈的对外接口(各大软件可以分享到朋友圈或 ...

  2. 并查集c++代码_[Leetcode 每日精选](本周主题-并查集) 547. 朋友圈

    题目难度: 中等 原题链接 今天继续来做并查集的问题, 这道题仍然比较基础, 而且也是个比较接近现实的问题了. 大家在我的公众号"每日精选算法题"中的聊天框中回复 并查集 就能看到 ...

  3. 【小米笔试题】朋友圈问题-并查集解法

    2016年小米校招笔试第三题(西安站) 3 假如已知有n个人和m对好友关系(存于数字r).如果两个人是直接或间接的好友(好友的好友的好友...),则认为他们属于同一个朋友圈,请写程序求出这n个人里一共 ...

  4. 7-25 朋友圈 (25 分)(详解+并查集的了解和应用)

    一:题目 某学校有N个学生,形成M个俱乐部.每个俱乐部里的学生有着一定相似的兴趣爱好,形成一个朋友圈.一个学生可以同时属于若干个不同的俱乐部.根据"我的朋友的朋友也是我的朋友"这个 ...

  5. leetcode547. 朋友圈(并查集)

    班上有 N 名学生.其中有些人是朋友,有些则不是.他们的友谊具有是传递性.如果已知 A 是 B 的朋友,B 是 C 的朋友,那么我们可以认为 A 也是 C 的朋友.所谓的朋友圈,是指所有朋友的集合. ...

  6. java并查集找朋友圈_图—并查集(解决朋友圈问题)

    图也是一种 非线性结构,是由多个顶点组成的关系集合组成的一种数据结构.图可以分为两种,无向图和有向图. ★图的定义: ★典型问题: 利用图能够解决很多问题,这里有一个较为典型的问题,假如已知有n个人和 ...

  7. 并查集——小米笔试题求朋友圈个数,分小组个数

    先给出小米的题: 已知有n个人和m对好友关系(存于数组r).如果两个人是直接或间接的好友(好友的好友的好友-),则认为他们属于同一个朋友圈,请写程序求出这n个人里一共有多少个朋友圈. 假如:n = 5 ...

  8. 算到怀疑人生!如何用并查集解决朋友圈个数问题?

    作者 |  channingbreeze 责编 | 郭芮 小史是一个应届生,虽然学的是电子专业,但是自己业余时间看了很多互联网与编程方面的书,一心想进BAT互联网公司. 今天小史去了一家社交小巨头公司 ...

  9. 力扣 547. 朋友圈 c语言 三种解法 深搜 广搜 并查集。

    题目: 并查集: /*力扣 547 朋友圈 并查集 c语言 2020/12/14 1:04 by ksks14*/ /*初始化 查找 合并*/ #define maxsize 10000 int fl ...

最新文章

  1. python 南京大学_南京大学python课程系列笔记之python基础之第一周:走进python
  2. 用计算机进行有理数计算时,鲁教版六上2.11《用计算器进行有理数的计算》word学案.doc...
  3. python类的专有方法_Python——类的专有方法
  4. es7 bulk api 批量插入es
  5. leetcode 778. 水位上升的泳池中游泳(并查集)
  6. 虚拟机中Linux安装Tools
  7. kafka java获取topic_通过编程方式获取Kafka中Topic的Metadata信息
  8. jQuery和vue 设置ajax全局请求
  9. Pentium 4处理器架构/微架构/流水线 (10) - NetBurst执行核详解 - 高速缓存/数据预取
  10. 身材太好的女生在职场中有哪些劣势?
  11. 如何在浏览器中增加Jupyter / ipython笔记本的单元格宽度?
  12. gms签名不一致_电子签名拍照-多媒体互动装置介绍「振邦视界」
  13. Tomcat下java普通类IO文件路径问题
  14. CS231n李飞飞计算机视觉 卷积神经网络详解下
  15. 电力线通信(Power Line Communication)简介
  16. 仿外卖mysql源码_进云仿美团外卖源码 v1.19
  17. BTA | 量子链帅初:区块链的开发很漫长,技术突破要有十年心理预期
  18. MySQL单表数据查询之分组数据查询之旅
  19. 我用Python爬取美食网站3032个菜谱并分析,没有我不会做的菜!
  20. SQL实现分组排序和组内排序(相同分数并列排名)

热门文章

  1. 通达OA MQ和Redis服务无法启动问题的处理(图文)
  2. 浅尝一个排程引擎Optaplanner - 前序
  3. 20210101英语单词学习(仅供自己记录)
  4. KEBA 控制器通过 NT50 连接西门子 PLC
  5. 2006-06-01 逃学在家也不轻松
  6. RFID资产管理系统高效解决资产管理出现的问题-新导智能
  7. Kalman滤波在船舶GPS导航定位系统中的应用
  8. Affinity Designer for Mac(强大的矢量图设计软件)
  9. 量子计算机有多可怕 一秒破译全世界所有密码!
  10. 个人站点配置免费HTTPS证书、nginx配置ssl证书、阿里云盾和站长之家两种