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

标签: 数据结构 A-B AB差集
154人阅读 评论(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;
}
查看评论

More Effective C++ 条款28(下)

条款28:灵巧(smart)指针(下)      译者注:由于我无法在文档区贴上图片(在论坛询问,结果无人回答),所以只能附上此译文的word文档。下载这种技术能给我们几乎所有想要的行为特性。假设我们...
  • zhc
  • zhc
  • 2001-12-18 08:18:00
  • 983

差集A-B(链表)

#include #includetypedef struct LNode { struct LNode *next; int data; }LNode,*lnode;void cre...
  • zxiang248
  • zxiang248
  • 2016-03-17 16:06:34
  • 217

求解集合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:38
  • 733

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

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

两数相减

描述 给定两个自然数A和B,求A-B的值。 输入 输入数据有多组,第一行为测试数据的组数n,下面的n行中,每行有两个数分别表示A,B。A和B的最大位数不超过1000位。 输...
  • u013502144
  • u013502144
  • 2014-01-22 15:55:45
  • 697

绝对值后不重复的数个数

原帖:http://topic.csdn.net/u/20100604/23/a83207c7-b9dd-4de2-b6cf-f44209e7bcd3.html 同意用Set来做。但是这里由于觉得可以...
  • micsolaris
  • micsolaris
  • 2010-07-08 20:48:00
  • 334

uchar a=2,b=254;a-b=?

uchar a=2,b=254; a-b=4; 254=-2;  -(-2)=+2; 255=-1; +1=-255
  • SuGuolin
  • SuGuolin
  • 2017-06-10 10:29:11
  • 456

问题一百三十二:自然数对

Description 知道2个自然数A,B,如果A+B,A-B都是平方数,那么A,B就是自然数对。要求写程序判断给定的2个数A,B是否为自然数对。  Input ...
  • liuyongshui4979
  • liuyongshui4979
  • 2013-05-01 11:17:21
  • 1607

经典数据交换算法

  • 2011年12月22日 21:50
  • 32B
  • 下载

((a+b) + abs(a-b))/2 的用法

 ((a+b) + abs(a-b))/2 用于找出两个数中的较大者 如果a>b 则 ((a+b) + abs(a-b))/2 = (a + b + a - b) / 2 = a 如果a...
  • u012463389
  • u012463389
  • 2016-02-27 11:24:20
  • 495
    个人资料
    持之以恒
    等级:
    访问量: 3433
    积分: 178
    排名: 91万+
    文章分类