java合并两个有序数组并去重
时间: 2025-06-29 21:21:32 浏览: 1
### 合并两个有序数组并去重
为了实现合并两个已排序的整数数组 `nums1` 和 `nums2` 并去除重复元素的功能,在 Java 中可以采用双指针法来遍历这两个数组。下面是一个完整的解决方案:
```java
import java.util.Arrays;
import java.util.LinkedHashSet;
class Solution {
public static int[] mergeAndRemoveDuplicates(int[] nums1, int[] nums2) {
LinkedHashSet<Integer> set = new LinkedHashSet<>();
// 将第一个数组加入集合
for (int num : nums1) {
set.add(num);
}
// 将第二个数组加入集合,自动过滤掉重复项
for (int num : nums2) {
set.add(num);
}
// 转换回数组形式
return set.stream().mapToInt(Number::intValue).toArray();
}
public static void main(String[] args) {
int[] nums1 = {1, 2, 3};
int[] nums2 = {2, 3, 4};
System.out.println("Original Arrays:");
System.out.print("Array 1: ");
System.out.println(Arrays.toString(nums1));
System.out.print("Array 2: ");
System.out.println(Arrays.toString(nums2));
int[] result = mergeAndRemoveDuplicates(nums1, nums2);
System.out.print("Merged & Deduplicated Array: ");
System.out.println(Arrays.toString(result));
}
}
```
此方法利用了 `LinkedHashSet` 的特性,它不仅能够保持插入顺序而且会自动移除任何尝试再次插入的相同元素。
对于更高效的算法设计,考虑到输入已经是排序好的情况,还可以通过一次线性的扫描完成合并操作,并在此过程中跳过相同的数值[^2]。
阅读全文
相关推荐

















