解题思路

这是一个简单的数组合并和排序问题,主要步骤如下:

  1. 读取两个数组的输入:

    • 第一个数组的长度和元素
    • 第二个数组的长度和元素
  2. 合并数组:

    • 将两个数组合并到一个新数组中
    • 使用 set 或其他数据结构去除重复元素
  3. 排序:

    • 对去重后的数组进行升序排序
  4. 输出结果:

    • 将排序后的数组元素连接成字符串输出

代码

#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 进行去重和排序
  • 时间复杂度: - 其中 为两个数组长度之和,主要来自排序操作
  • 空间复杂度: - 需要额外空间存储合并后的数组