gpt4 book ai didi

java - 查找数组中不同的重复项

转载 作者:行者123 更新时间:2023-12-02 07:06:45 24 4
gpt4 key购买 nike

我正在尝试编写一个方法来查找数组中的重复值,并在发生两次时返回 true(否则返回 false)。

我有一些东西,但由于某种原因,它在某种情况下无法正常工作:

public static boolean twoDuplicates(int[] values) {

boolean twoDuplicate = false;
int counter = 0;

for(int i = 0; i < values.length; i++){
for(int z = i + 1; z <= values.length - 1; z++){
if(i != z && values[i] == values[z])
counter++;
}
}
if(counter == 2)
twoDuplicate = true;
return twoDuplicate;
}

现在我测试了一下,当值为[3,3,3,6,6]时它不起作用。有理由吗?

编辑:我忘了提及重复项必须是不同的。

最佳答案

看起来您只是在计算匹配的总数。即您将匹配 3 两次(现在计数器 = 3)和 z 一次,总共 4 个。当我使用数组运行此代码时,我得到 counter = 4;

我认为以下代码将返回不同重复项的数量(具有重复项的数量,无论出现多少次)。这将为测试数组返回 2。它首先对数组进行排序,然后查找重复项,忽略已经计算过的重复项。

public static boolean twoDuplicates(int[] values) {

boolean twoDuplicate = false;
int counter = 0;
Arrays.sort(values);
int old = values[0];
boolean numberSeen = false;
for(int i = 0; i < values.length; i++){
if(values[i] == old){
if(!numberSeen){
counter++;
numberSeen = true;
}
}else{
numberSeen = false;
old = values[i];
}
}
if(counter == 2)
twoDuplicate = true;
return twoDuplicate;
}

关于java - 查找数组中不同的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16006901/

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