首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

C++ 刷題:集合合並 {A}+{B} 實現

     編輯:關於C++

問題描述

輸入兩個集合大小 n,m 及元素,輸出合並後去重、升序序列。元素為 int 範圍,n,m≤10000。

簡單實現:數組 + 排序 + 去重

int a[20002], b[20002];
int main() {
    int n,m;
    while (cin>>n>>m) {
        for (int i=0;i>a[i];
        sort(a, a+n+m);
        b[0]=a[0]; int cnt=1;
        for (int i=1;i

優化:unordered_set / set


unordered_set s;
int x;
for (int i=0;i>x; s.insert(x); }
vector v(s.begin(), s.end());
sort(v.begin(), v.end());
// 輸出 v

關鍵點

  • 數組法 O((n+m) log(n+m)),常數小,適合競賽。
  • set 自動去重有序,但常數大。
  • 輸出格式:元素間單空格,行尾無空格。

總結

此題為基礎集合操作。數組 + 排序 + 去重是競賽中最常用、最高效的實現。掌握 sort + 單遍歷去重模板,秒殺同類問題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved