【发布时间】:2016-01-24 22:20:20
【问题描述】:
我从给定的未排序数组中快速返回非重复数组的方法似乎只在某些时候有效:
public static int[] removeDuplicates(int[] arr) {
if (arr.length <= 1) {
return arr;
}
int lastFound = arr[0];
int currPos = 1;
for (int i = 1; i < arr.length; ++i) {
int num = arr[i];
if (lastFound != num) {
lastFound = num;
arr[currPos++] = num;
}
}
return Arrays.copyOf(arr, currPos);
}
当我输入时:
int[] arr = {0, 1, 1, 0, 1, 1, 2, 2}
int[] arr2 = removeDuplicates(arr);
它会返回:
arr2 = {0, 1, 0, 1, 2}
它应该返回的位置(没有重复):
arr2 = {0, 1, 2}
【问题讨论】:
-
你试过调试你的代码吗?
-
您的算法不正确。对于 input 数组的每个元素,您必须检查 output 数组的所有元素是否该值已经在其中;如果没有,添加到输出数组。 (输出数组是否重用输入数组并不重要。)
标签: java sorting duplicates