删除 double[] 数组中的重复项
Delete duplicats in a double[] array
我想删除 double[] 数组中的重复项。
不幸的是,我不能使用 ArrayList 或其他任何东西,它必须是“普通”双数组。
我尝试使用 class 数组的 binarySearch() 方法,但找不到好的解决方案,因为我不仅要搜索还要删除重复项。然后我每次删除这样的重复项时都必须减少长度。
这个问题有解决办法吗?
public static double[] removeDuplicates(double[] arr) {
return Arrays.stream(arr).distinct().toArray();
}
double[] arr = {...};
double[] removed = new double[arr.length];
for (int k=0; k<removed.length; k++) {
boolean b = false;
for (int i=0; i<arr.length; i++) {
b = false;
for (int j=0; j<removed.length; j++) {
if (arr[i] == arr[j] && i != j) b = true;
}
if (!b) removed[k] = arr[i];
}
}
// Then parse through 'removed' to make a smaller list of all initialized elements.
我想删除 double[] 数组中的重复项。 不幸的是,我不能使用 ArrayList 或其他任何东西,它必须是“普通”双数组。 我尝试使用 class 数组的 binarySearch() 方法,但找不到好的解决方案,因为我不仅要搜索还要删除重复项。然后我每次删除这样的重复项时都必须减少长度。
这个问题有解决办法吗?
public static double[] removeDuplicates(double[] arr) {
return Arrays.stream(arr).distinct().toArray();
}
double[] arr = {...};
double[] removed = new double[arr.length];
for (int k=0; k<removed.length; k++) {
boolean b = false;
for (int i=0; i<arr.length; i++) {
b = false;
for (int j=0; j<removed.length; j++) {
if (arr[i] == arr[j] && i != j) b = true;
}
if (!b) removed[k] = arr[i];
}
}
// Then parse through 'removed' to make a smaller list of all initialized elements.