(Set){A} + {B} hdu1412

{A} + {B}
 
Problem Description
给你两个集合,要求{A} + {B}.
注:同一个集合中不会有两个相同的元素.
 
Input
每组输入数据分为三行,第一行有两个数字n,m(0<=10000),分别表示集合A和集合B的元素个数.后两行分别表示集合A和集合B.每个元素为不超出int范围的整数,每个元素之间有一个空格隔开.
 
Output
针对每组数据输出一行数据,表示合并后的集合,要求从小到大输出,每个元素之间有一个空格隔开.
 
Sample Input
1 2
1
2 3
1 2
1
1 2
 
Sample Output
1 2 3
1 2
 
Author
xhd
 
可以用JAVA的Set类来写,就是hdu对此的判定并不严格。
JAVA代码:
import java.math.BigDecimal;
import java.util.Iterator;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet; import javax.swing.plaf.basic.BasicArrowButton; public class Main { public static void main(String[] args) {
Scanner inScanner = new Scanner(System.in);
while(inScanner.hasNext()) {
int m = inScanner.nextInt();
int n = inScanner.nextInt();
Set<Integer> set = new TreeSet<>();
for(int i = 0; i < m;i++) {
int x = inScanner.nextInt();
set.add(x);
}
for(int i = 0 ;i < n;i++) {
int x = inScanner.nextInt();
if(!set.contains(x)) {
set.add(x);
}
}
//for循环遍历。
// for(Integer integer:set) {
// System.out.print(integer + " ");
// }
// System.out.print("\n"); //一般迭代遍历。
Iterator<Integer> iterator = set.iterator();
while(iterator.hasNext()) {
int i = iterator.next();
System.out.print(i + " ");
}
System.out.print("\n"); //这个很重要,虽然最后一个数的后面有个空格,但是会AC,并且如果用println(),会WA。
}
} }

C++代码:

#include <iostream>
#include <set>
using namespace std;
int main()
{
set<int> a; //可以只用一个集合表示A和B的并集。
int m,n;
while(cin>>m>>n){
a.clear(); //必须要用,相当于初始化。
while(m--){
int i;
cin>>i;
a.insert(i);
}
while(n--){
int i;
cin>>i;
a.insert(i);
}
int i=; //注意领会。
set<int>::iterator it=a.begin();
for(;it!=a.end();it++,i++){
if(i==)
cout<<*it;
else
cout<<" "<<*it;
}
cout<<endl;
}
return ;
}
 
 
上一篇:平滑增加Nginx模块


下一篇:字节跳动后端实习一面面经(凉经)