gpt4 book ai didi

java - 迭代排序数组以删除重复项

转载 作者:太空宇宙 更新时间:2023-11-04 07:51:31 25 4
gpt4 key购买 nike

首先让我说这是一个我遇到困难的家庭作业问题。

我已经对一个数组进行了排序,我需要做的是使用另一个数组通过迭代第一个数组并比较相邻项然后将非重复项添加到新数组来删除重复项。完成后,我将旧数组 = 设置为新数组。我不习惯java,因此我遇到了一些问题,我认为正确设置了迭代。

public static void main(String[] args) {
args = new String[] { "data/list1.txt" };
StdIn.fromFile("data/list2.txt");
// StdOut.toFile ("finished.txt");
int[] whitelist = In.readInts(args[0]);

Arrays.sort(whitelist);
int newArray[] = new int[whitelist.length];
for (int i = 0; i < whitelist.length-1; i++) {
int k = 0;
if(whitelist[i+1] > whitelist[i])
newArray[k] = whitelist[i];
k++;
StdOut.println(java.util.Arrays.toString(whitelist));
whitelist = newArray;
}
for (int i=0; i<newArray.length;i++){
StdOut.println(java.util.Arrays.toString(newArray));
}

这段代码是更大的二分搜索的一部分,但这是我遇到问题的部分。

我的输出除了没有删除重复项之外还打印了几次。

任何方向将不胜感激。

最佳答案

由于不使用集合等限制,您的代码可以通过这种方式重写,并且它将起作用:

    Arrays.sort(whitelist);
int newArray[] = new int[whitelist.length];
newArray[0] = whitelist[0];
int k = 1;
for (int i = 0; i < whitelist.length - 1; i++) {
if(whitelist[i+1] > whitelist[i]) {
newArray[k] = whitelist[i + 1];
k++;
}
}
newArray = Arrays.copyOf(newArray, k);
whitelist = newArray;
System.out.println(Arrays.toString(newArray));

关于java - 迭代排序数组以删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14384559/

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