解题思路
这是一个集合合并问题。关键点:
-
数据结构选择:
- 使用 去重
- 或使用排序后合并
-
输出要求:
- 升序输出
- 元素间用空格分隔
- 行末无空格
代码
#include <iostream>
#include <set>
using namespace std;
int main() {
int n, m;
while(cin >> n >> m) {
set<int> s;
// Input set A
for(int i = 0; i < n; i++) {
int x;
cin >> x;
s.insert(x);
}
// Input set B
for(int i = 0; i < m; i++) {
int x;
cin >> x;
s.insert(x);
}
// Output
auto it = s.begin();
cout << *it;
++it;
for(; it != s.end(); ++it) {
cout << " " << *it;
}
cout << endl;
}
return 0;
}
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()) {
int n = sc.nextInt();
int m = sc.nextInt();
TreeSet<Integer> set = new TreeSet<>();
// Input set A
for(int i = 0; i < n; i++) {
set.add(sc.nextInt());
}
// Input set B
for(int i = 0; i < m; i++) {
set.add(sc.nextInt());
}
// Output
Iterator<Integer> it = set.iterator();
System.out.print(it.next());
while(it.hasNext()) {
System.out.print(" " + it.next());
}
System.out.println();
}
}
}
while True:
try:
n, m = map(int, input().split())
# Input both sets and convert to set for uniqueness
A = set(map(int, input().split()))
B = set(map(int, input().split()))
# Merge and sort
result = sorted(A.union(B))
# Output with proper formatting
print(" ".join(map(str, result)))
except:
break
算法及复杂度
- 算法:集合操作
- 时间复杂度:,主要是排序的复杂度
- 空间复杂度:,存储合并后的集合