将两个整型数组按照升序合并,并且过滤掉重复数组元素
时间: 2023-05-30 10:06:07 浏览: 100
可以使用两个指针分别指向两个数组的开头,比较指针指向的元素,将较小的元素加入新的数组中,并将指针向后移动一位,直至其中一个数组遍历完毕。最后将另一个数组剩余的元素加入新的数组中,再去重即可。
示例代码如下:
```java
public static int[] mergeAndDistinct(int[] arr1, int[] arr2) {
int[] merged = new int[arr1.length + arr2.length];
int i = 0, j = 0, k = 0;
while (i < arr1.length && j < arr2.length) {
if (arr1[i] < arr2[j]) {
merged[k++] = arr1[i++];
} else if (arr1[i] > arr2[j]) {
merged[k++] = arr2[j++];
} else {
merged[k++] = arr1[i++];
j++;
}
}
while (i < arr1.length) {
merged[k++] = arr1[i++];
}
while (j < arr2.length) {
merged[k++] = arr2[j++];
}
int[] distinct = new int[k];
int m = 0;
for (int n = 0; n < k; n++) {
if (n == 0 || merged[n] != merged[n-1]) {
distinct[m++] = merged[n];
}
}
return Arrays.copyOf(distinct, m);
}
```
该方法的时间复杂度为O(nlogn),其中n为两个数组的长度之和。
阅读全文