Java 合并两个有序数组并去重 - 数据结构与算法

本文提供了一个 Java 函数,用于合并两个有序数组并去除重复元素。函数接受两个有序数组作为输入,并返回一个合并后的有序数组,其中重复元素已被移除。

要求:

  1. 数字的大小在 1~10000 之间
  2. 两个数组中,有重复的数据,要过滤掉
  3. 每个数组的大小,均在有限的内容范围内
  4. 输入的两个有序数组,自身内部没有重复的内容

代码示例:

public static int[] mergeArrays(int[] arr1, int[] arr2) {
    // 去重
    Set<Integer> set = new HashSet<>();
    for (int i : arr1) {
        set.add(i);
    }
    for (int i : arr2) {
        set.add(i);
    }
    // 转成数组并排序
    int[] mergedArr = new int[set.size()];
    int index = 0;
    for (int i : set) {
        mergedArr[index++] = i;
    }
    Arrays.sort(mergedArr);
    return mergedArr;
}

代码解析:

  1. 使用 Set 去除重复元素:使用 HashSet 存储两个数组的元素,由于 HashSet 的特性,它会自动去除重复元素。
  2. Set 转为数组:将 Set 中的元素转换为 int[] 数组。
  3. 排序:使用 Arrays.sort() 对数组进行排序,得到最终的合并后的有序数组。

示例:

int[] arr1 = {1, 2, 3, 4, 5};
int[] arr2 = {3, 4, 5, 6, 7};
int[] mergedArr = mergeArrays(arr1, arr2);
// mergedArr = {1, 2, 3, 4, 5, 6, 7}

总结:

该函数利用了 Set 的去重特性,并通过排序操作,实现了两个有序数组的合并去重功能。

Java 合并两个有序数组并去重 - 数据结构与算法

原文地址: https://www.cveoy.top/t/topic/nksz 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录