解题思路
这是一个简单的数组合并和排序问题,主要步骤如下:
-
读取两个数组的输入:
- 第一个数组的长度和元素
- 第二个数组的长度和元素
-
合并数组:
- 将两个数组合并到一个新数组中
- 使用
set
或其他数据结构去除重复元素
-
排序:
- 对去重后的数组进行升序排序
-
输出结果:
- 将排序后的数组元素连接成字符串输出
代码
#include <iostream>
#include <set>
using namespace std;
int main() {
int n1, n2;
set<int> nums;
// 读取第一个数组
cin >> n1;
for(int i = 0; i < n1; i++) {
int num;
cin >> num;
nums.insert(num);
}
// 读取第二个数组
cin >> n2;
for(int i = 0; i < n2; i++) {
int num;
cin >> num;
nums.insert(num);
}
// 输出结果
for(int num : nums) {
cout << num;
}
cout << endl;
return 0;
}
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
TreeSet<Integer> nums = new TreeSet<>();
// 读取第一个数组
int n1 = sc.nextInt();
for(int i = 0; i < n1; i++) {
nums.add(sc.nextInt());
}
// 读取第二个数组
int n2 = sc.nextInt();
for(int i = 0; i < n2; i++) {
nums.add(sc.nextInt());
}
// 输出结果
StringBuilder sb = new StringBuilder();
for(int num : nums) {
sb.append(num);
}
System.out.println(sb.toString());
}
}
# 读取第一个数组
n1 = int(input())
nums1 = list(map(int, input().split()))
# 读取第二个数组
n2 = int(input())
nums2 = list(map(int, input().split()))
# 合并数组并去重排序
result = sorted(set(nums1 + nums2))
# 输出结果
print(''.join(map(str, result)))
算法及复杂度
- 算法:使用
set
进行去重和排序 - 时间复杂度:
- 其中
为两个数组长度之和,主要来自排序操作
- 空间复杂度:
- 需要额外空间存储合并后的数组