我在将两个数组合并成一个后,无法删除其中的重复项。我已经编写了以下代码来合并这些数组,但是我不知道如何从最终的数组中删除重复项。假设这些数组已经排序。
public static int[] merge(int[] list1, int[] list2) {
int[] result = new int[list1.length + list2.length];
int i = 0;
int j = 0;
for (int k = 0; k < (list1.length + list2.length); k++) {
if (i >= list1.length) {
result[k] = list2[j];
j++;
}
else if (j >= list2.length) {
result[k] = list1[i];
i++;
}
else {
if (list1[i] < list2[j]) {
result[k] = list1[i];
i++;
} else {
result[k] = list2[j];
j++;
}
}
}
return result;
}
Set<Integer>
中可能是以MB为单位,而不是以GB为单位)是,您可以节省CPU消耗的成本(O(1)的检查与O(n)的检查相比)。对于这个问题来说,HashSet
是行不通的,因为它是无序的,而且OP拥有排序数据。 - Rogue