Java 合并两个有序数组并去重 - 数据结构与算法
Java 合并两个有序数组并去重 - 数据结构与算法
本文提供了一个 Java 函数,用于合并两个有序数组并去除重复元素。函数接受两个有序数组作为输入,并返回一个合并后的有序数组,其中重复元素已被移除。
要求:
- 数字的大小在 1~10000 之间
- 两个数组中,有重复的数据,要过滤掉
- 每个数组的大小,均在有限的内容范围内
- 输入的两个有序数组,自身内部没有重复的内容
代码示例:
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;
}
代码解析:
- 使用
Set去除重复元素:使用HashSet存储两个数组的元素,由于HashSet的特性,它会自动去除重复元素。 - 将
Set转为数组:将Set中的元素转换为int[]数组。 - 排序:使用
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 的去重特性,并通过排序操作,实现了两个有序数组的合并去重功能。
原文地址: https://www.cveoy.top/t/topic/nksz 著作权归作者所有。请勿转载和采集!