集合

复制代码
//------------------------------------集合---------------------------------//
/*
题目描述
给你两个集合,要求{A} + {B}。 注:同一个集合中不会有两个相同的元素。
输入描述:
每组输入数据分为三行,第一行有两个数字n,m(0 ≤ n,m ≤ 10000),分别表示集合A和集合B的元素个数。后两行分别表示集合A和集合B。每个元素为不超过int范围的整数,每个元素之间有个空格隔开。
输出描述:
针对每组数据输出一行数据,表示合并后的集合,要求从小到大输出,每个元素之间有一个空格隔开,行末无空格。

示例1
输入
3 3
1 3 5
2 4 6
输出
1 2 3 4 5 6
*/
/*
    我使用了两种方法
    第一种是标准库的set,用这个比较简单,不用判断数字是否重复,因为set就是不重复,
    并且排序的集合,默认排序为升序,如果遇到相同的数,会直接忽略,不重复的数才放
    入,在stl内部使用红黑树实现的,这是一个平衡二叉树,不做太多说明。
    第二种用的vector,把所有数push_back进去,用算法sort排序后,用unique删除重
    复元素(去除重复元素后,空间还是在那里,需要用erase删除空间)
*/
#include<iostream>
#include<algorithm>
#include<set>
#include<vector>
using namespace std;
int f8()
{
    //法1
    int numA, numB;
    cin >> numA >> numB;
    int temp;
    set<int> s;
    for (int i = 0; i < numA; ++i)
    {
        cin >> temp;
        s.insert(temp);
    }
    for (int i = 0; i < numB; ++i)
    {
        cin >> temp;
        s.insert(temp);
    }
    auto ptr = s.cbegin();
    for (int i = 0; i < s.size() - 1; ++i)
    {
        cout << *ptr << " ";
        ++ptr;
    }
    cout << *ptr;
    return 0;
    //法2
    /*
        int numA, numB;
        cin >> numA >> numB;
        vector<int> A, B;
        int temp;
        for(int i = 0; i < numA; ++i)
        {
            cin >> temp;
            A.push_back(temp);
        }
        for(int i = 0; i < numB; ++i)
        {
            cin >> temp;
            B.push_back(temp);
        }
        vector<int> vec(A);
        for(int i = 0; i < B.size(); ++i)
            vec.push_back(B[i]);
        sort(vec.begin(), vec.end());
        auto ptr = unique(vec.begin(), vec.end());
        vec.erase(ptr, vec.end());
        for(int i = 0; i < vec.size() - 1; ++i)
            cout << vec[i] << " ";
        cout << *(vec.cend() - 1);
        return 0;
        */
}
复制代码

 

posted @ 2017-11-01 19:36  CoderZSL  阅读(294)  评论(0)    收藏  举报
编辑推荐:
· 一次 .NET 性能优化之旅:将 GC 压力降低 99%
· MySQL索引完全指南:让你的查询速度飞起来
· 一个字符串替换引发的性能血案:正则回溯与救赎之路
· 为什么说方法的参数最好不要超过4个?
· C#.Net 筑基-优雅 LINQ 的查询艺术
阅读排行:
· 我用这13个工具,让开发效率提升了5倍!
· 一次 .NET 性能优化之旅:将 GC 压力降低 99%
· Coze工作流实战:一键生成鸡汤视频——厉害的人,早已戒掉情绪
· 32岁入行STM32迟吗?
· C++服务开发环境-万事开头难
点击右上角即可分享
微信分享提示