`

0821集合问题

阅读更多

{ aaa, bbb, ccc},{bbb, ddd }, { eee, fff }, { ggg },{ddd,hhh} 等一些字符串的集合
要求把交集不为空的集合并起来,如上例会得到 {  aaa, bbb, ccc, ddd, hhh}, {eee,fff},{ggg}
(1) 思想 (2) 算法及复杂度 (3) 改进

 

算法思路:

1. 将每个集合中的元素放到一个HashSet中(方便快速查找)       O(n)

2. 根据每个hashset中元素的个数建最小堆                            O(n)

3. 从堆中取出元素数最少的集合,查找其他HashSet(标志为set1)中是否有与该集合中相同的元素,

       如果有:堆顶hashset与set1进行合并,删除堆顶元素,删除set1,插入合并后的hashset

       如果没有:删除堆顶元素,将其暂存起来 

    如果堆的大小为1时,停止运算                                           O(logn)

 

5. 取出暂存的hashset 和 堆顶hashset, 并打印剩下的hashset  O(n)

 

时间复杂度:

O(n)+O(log(n))

 

算法实现:


















































































































 

 

 

 

 

分享到:
评论

相关推荐

    【算法图解】——集合覆盖问题

    文章目录集合覆盖问题州集合,电台字典电台选择 集合覆盖问题 覆盖问题要求不会重复——采用set() 假设你要办一个广播电台,要让所有的8个州都听到,你要选择广播电台,如何选择尽可能少的广播电台 州集合,...

    最小集合覆盖

    ### 最小集合覆盖问题及其精确算法解析 #### 一、最小集合覆盖问题介绍 最小集合覆盖问题(Minimum Set Cover Problem)是组合优化中的一个经典问题,属于NP-hard问题。问题可以表述为:给定一系列集合S = {S_1, S_...

    算法(c++)—— 集合划分问题.rar

    集合划分问题是一个经典的计算机科学问题,它在图论、组合优化和算法设计中都有重要的应用。在C++编程中,解决这个问题通常涉及到数据结构、递归、动态规划或回溯等技术。本压缩包文件“算法(c++)—— 集合划分...

    Java集合面试问题和答案

    ### Java集合面试问题详解 #### 1. Java集合框架是什么?说出一些集合框架的优点? Java集合框架是Java标准库中的一个重要组成部分,它提供了一系列用于存储和操作数据的接口和类。最初版本的Java包含了诸如`...

    《集合问题》学情分析.doc

    《集合问题》学情分析专注于探究如何在三年级学生的认知水平上逐步渗透和应用集合理论,以促进学生对数学概念的深入理解和数学思维能力的发展。 首先,我们应当明确集合思想的重要性。在现代数学领域中,集合不仅是...

    子集合问题算法的设计与实现

    设计和实现子集合问题,使用的编程语言是java

    实现2-7集合划分问题.cpp

    实现2-7集合划分问题.cpp

    求集合的所有子集问题

    求集合的所有子集问题 问题描述: 试写一个递归算法实现求一个集合的所有子集。 算法设计: 给定一个非空的集合,用递归算法输出它的所有子集。 数据输入: 由文件input.txt 提供输入数据。文件第1行是集合中的元素...

    公理集合论导引.pdf

    连续统假设是关于实数集合的势是否大于自然数集合的势的问题。尽管CH在ZFC体系中无法证明也无法证伪,但数学家们对它的研究揭示了集合的势和基数的许多深刻性质。 选择公理(AC)是集合论中的另一个重要公理,它...

    顺序表表示集合,实现集合的交、并、差运算

    常见的集合运算包括交集(两个集合共有的元素构成的新集合)、并集(两个集合所有元素构成的新集合)以及差集(一个集合去除另一个集合中的元素后剩下的元素构成的新集合)。 ### 二、程序代码分析 #### 1. 数据...

    最小集合覆盖的启发式算法

    集合覆盖问题是 NP 困难问题中具有代表性的问题之一,它在模式识别、机器学习等领域中具有重要的应用。目前已有许多比较有效的启发式算法,但由于问题本身固有的难度,这些启发式算法具有各种的缺陷。本文提出的启发...

    ll1文法和First集合follow集合

    在LL1分析中,First集合和Follow集合扮演了关键角色。 First集合是文法中每个非终结符可能生成的第一个符号的集合。例如,对于非终结符A,First(A)包含了从A出发的所有产生式所能生成的第一个符号。如果一个产生式...

    集合的划分应用

    它在组合数学中有广泛的应用,尤其是在解决集合划分问题时尤为重要。 **2. 计算公式** 对于任意\(n, k \in \mathbb{N}^+\),第二类斯特林数\(S(n, k)\)的递推公式为: \[S(n, k) = kS(n-1, k) + S(n-1, k-1)\] ...

    java集合框架面试题

    - **引入背景**: 在Java 1.5中,泛型被引入到集合框架中,以解决类型安全问题和消除不必要的类型转换。 - **优点**: - **类型安全性**: 泛型允许开发者在创建集合时指定其元素类型,从而避免运行时的`...

    论文研究-集合覆盖问题的数据约简研究.pdf

    针对当前解决大规模集合覆盖问题的算法普遍存在着效率不高的问题,提出了一套削减数据规模的约简方法,并给出了一个能够与其他所有解决集合覆盖问题算法相结合的约简算法。用Beasley提出的45个测试用例进行试验,...

    集合论基础

    罗素悖论展示了朴素集合论中的矛盾,这导致了数学家们对集合论进行了公理化处理,以避免此类问题。其中最著名的公理化尝试是Zermelo-Fraenkel集合论,它增加了选择公理作为其公理系统的一部分,形成了我们今天所用的...

    C语言集合运算器课设报告

    该程序旨在提供一个平台,可以进行集合的基本运算,包括集合的并、交、差运算,以及元素判定、子集判定和求补集的功能。以下是项目的详细分析、设计和实现过程。 1. 绪论: 集合论是数学的基础概念之一,它在计算机...

    EnKF集合卡尔曼滤波代码.zip_EnKF_utr_扰动观测_集合卡尔曼_集合滤波

    传统卡尔曼滤波假设系统和观测都是线性的,而EnKF则通过构建样本集合来处理非线性问题,它将状态估计转化为统计推断的问题,通过集合成员的平均和协方差来逼近真实状态的后验概率分布。 在压缩包的"Analysis"子...

Global site tag (gtag.js) - Google Analytics