gpt4 book ai didi

java - 如何在不使用 Set 的情况下有效地从数组中删除重复项

转载 作者:IT老高 更新时间:2023-10-28 20:47:54 27 4
gpt4 key购买 nike

我被要求编写自己的实现来删除数组中的重复值。这是我创建的。但经过 1,000,000 个元素的测试后,需要很长时间才能完成。我可以做些什么来改进我的算法或删除任何错误吗?

我需要编写自己的实现 - 而不是 use Set , HashSet 等或任何其他工具,例如迭代器。只需一个数组即可删除重复项。

public static int[] removeDuplicates(int[] arr) {

int end = arr.length;

for (int i = 0; i < end; i++) {
for (int j = i + 1; j < end; j++) {
if (arr[i] == arr[j]) {
int shiftLeft = j;
for (int k = j+1; k < end; k++, shiftLeft++) {
arr[shiftLeft] = arr[k];
}
end--;
j--;
}
}
}

int[] whitelist = new int[end];
for(int i = 0; i < end; i++){
whitelist[i] = arr[i];
}
return whitelist;
}

最佳答案

你可以借助Set Collection

int end = arr.length;
Set<Integer> set = new HashSet<Integer>();

for(int i = 0; i < end; i++){
set.add(arr[i]);
}

现在,如果您要遍历这个 set,它将只包含唯一值。迭代代码是这样的:

Iterator it = set.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}

关于java - 如何在不使用 Set 的情况下有效地从数组中删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17967114/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com