关闭

A-B差集(即在A但不在B的数)

标签: 数据结构A-BAB差集
73人阅读 评论(0) 收藏 举报
分类:

A B的差集

这里写图片描述

思路:对于这个查找的题,如果用一般的循环去查找,时间复杂度为O(n2),肯定是不能Accepted的,那么我们是否可以将时间复杂度降低到O(n)呢?为了达到这个目的,我们需要用到下面的容器
1. set
2. vector

思路

  • 首先用两个vector存好输入的数据
  • 将两个vector的数据转化为set的数据,由于set的自动去重功能,次数set的数据都是唯一的。
  • 我们每次将set1中的一个数据插入set2当中,看看set2的size大小有没有改变,若改变了,即代表插入成功(与set2数据不重复),若不成功,则这个数据就是A-B的一个数据成员。
#include <iostream>
#include <vector>
#include <set>
using namespace std;

int main() {
    int time;
    cin >> time;
    while(time--) {
        vector<int> v1, v2, result;
        int num1;
        cin >> num1;
        while(num1--) {//input v1
            int temp;
            cin >> temp;
            v1.push_back(temp);
        }

        int num2;
        cin >> num2;
        while(num2--) {//input v2
            int temp;
            cin >> temp;
            v2.push_back(temp);
        }

        set<int> set1(v1.begin(), v1.end());
        set<int> set2(v2.begin(), v2.end());

        for(auto it1 = set1.begin(); it1 != set1.end(); it1++) {
            int size2 = set2.size();
            set2.insert(*it1);
            if(size2 != set2.size()) {//judge
                result.push_back(*it1);
            }
        }

        for(int i = 0; i < result.size(); i++) {
            if(i != result.size()-1) {
                cout << result[i] << " ";
            }else {
                cout << result[i];
            }

        }
        cout << endl;
    }
    return 0;
}
0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

A、B两个整数集合,设计一个算法求他们的交集,尽可能的高效。

思路1:排序法   对集合A和集合B进行排序(升序,用快排,平均复杂度O(N*logN)),设置两个指针p和q,同时指向集合A和集合B的最小值,不相等的话移动*p和*q中较小值的指针,相等的话同...
  • jie1991liu
  • jie1991liu
  • 2013-10-27 10:58
  • 29684

(LeetCode初探)从A+B开始

LeetCode
  • suyoung_Coder
  • suyoung_Coder
  • 2015-05-22 23:22
  • 1272

利用线性表的顺序结构求集合的并、交、差、补(C语言实现)

昨天用数据结构中的线性表的顺序结构实现了关于集合的并、交、差、补的集合运算,做个记录,希望也能帮助到其他人。 一、算法分析   (1)用数组A,B,C,E表示集合。假定A={1,3,4,5,6,7,9...
  • u013228403
  • u013228403
  • 2014-03-24 19:10
  • 4295

求解集合A与B的差集

已知集合A和B的元素分别用不含头结点的单链表存储,函数difference( )用于求解集合A与B的差集,并将结果保存在集合A的单链表中。例如,若集合A={5,10,20,15,25,30},集合B=...
  • junli_chen
  • junli_chen
  • 2015-10-05 21:18
  • 624

求解集合A和集合B的差集

求解集合A和集合B的差集 题目:已知集合A和B的元素分别用不含头结点的单链表存储,函数difference()用于求解集合A与B的差集,并将结果保存在集合A的单链表中。例如,若集合A={5,10,2...
  • step_ma
  • step_ma
  • 2017-07-25 20:43
  • 183

双向链表,链表求A与B差集,链表多项式相加,静态链表

集合A用单链表La表示,集合B用单链表Lb表示,设计算法求A与B两个集合的差,即A-B 分析: A-B即属于A而不属于B的元素,对集合A的每个元素x,在集合B中进行查找,如果存在与x相同的元素,删除x...
  • xuhang0910
  • xuhang0910
  • 2015-09-23 23:10
  • 634

A-B差集的计算

算法代码: /**************** 作者:一叶扁舟 时间:23:29 2016/9/2 问题:递增有序的链表A和B,不存在相等的数据,求出A-B的集合, 即A中存在B中不存在 *****...
  • u011662320
  • u011662320
  • 2016-09-11 00:07
  • 233

求链表A与链表B的差集

题目描述: 已知集合A和B的元素分别用不含头结点的单链表存储,函数difference()用于求解集合A与B的差集,并将结果保存在集合A的单链表中。例如,若集合A={5,10,20,15,25,30...
  • qq_35524916
  • qq_35524916
  • 2017-07-27 02:30
  • 143

已知集合A和B的元素分别用不含头结点的单链表存储,函数difference()用于求解集合A与B的差集,并将结果保存在集合A的单链表中

思路: 在B中寻找A的元素,若是找到了,则删除A中的该元素。这样A中剩下的就是A,B的差集 例如,若集合A={5,10,20,15,25,30},集合B={5,15,35,25},完成计算后A...
  • ChenMiao0924
  • ChenMiao0924
  • 2017-07-26 12:54
  • 239

已知集合A和B的元素分别用不含头结点的单链表存储,函数difference()用于求解集合A与B的差集,并将结果保存在集合A的单链表中。

已知集合A和B的元素分别用不含头结点的单链表存储,函数difference()用于求解集合A与B的差集,并将结果保存在集合A的单链表中。例如,若集合A={5,10,20,15,25,30},集合B={...
  • ChaseRaod
  • ChaseRaod
  • 2017-07-26 14:35
  • 265
    个人资料
    • 访问:2697次
    • 积分:156
    • 等级:
    • 排名:千里之外
    • 原创:11篇
    • 转载:3篇
    • 译文:0篇
    • 评论:31条
    文章分类