gpt4 book ai didi

Java - 在不使用外部类或方法的情况下计算数组中的重复项?

转载 作者:行者123 更新时间:2023-11-30 06:12:22 25 4
gpt4 key购买 nike

我需要计算数组中的重复项数量,但我只能使用数组,不能使用 HashSet 或 ArrayList。

以下是示例输入及其预期输出:

numDuplicates(new double[] { }) --> 0
numDuplicates(new double[] { 11.0 }) --> 0
numDuplicates(new double[] { 11.0, 11.0, 11.0, 11.0 }) --> 3
numDuplicates(new double[] { 11.0, 11.0, 11.0, 11.0, 22.0, 33.0, 44.0, 44.0, 44.0, 44.0, 44.0, 55.0, 55.0, 66.0, 77.0, 88.0, 88.0 }) --> 9
numDuplicates(new double[] { 11.0, 22.0, 33.0, 44.0, 44.0, 44.0, 44.0, 44.0, 55.0, 55.0, 66.0, 77.0, 88.0 }) --> 5

这是我的代码,但它会计算每个数字后的重复项,返回夸大的计数,即 {11.0, 11.0, 11.0, 11.0} 返回 6 而不是 3:

public static int numDuplicates (double[] list) {

int dupCount = 0;
for (int i = 0; i < list.length; i++) {
for (int j = i + 1; j < list.length; j++) {
if (list[i] == list[j]) {
dupCount++;
}
}
}

return dupCount; //TODO1: fix this
}

注意:我是 Stack 的新手,我尝试彻底搜索,但找不到与我的输入/输出类似的数组重复问题,但如果有人已经问过这个问题,我很抱歉。

最佳答案

简单修复:

public static int numDuplicates (double[] list) {

int dupCount = 0;
for (int i = 0; i < list.length; i++) {
for (int j = i + 1; j < list.length; j++, i++) { // HERE it is
if (list[i] == list[j]) {
dupCount++;
}
}
}

return dupCount;
}

我所做的是增加 i除了 j 。这所做的是启动ij的地方停了下来。我想这样做的原因是因为你说它返回了一个夸大的计数,所以我认为这一定是因为你做了太多的计数,而这正是发生的事情。

i始终以 1 的增量跟随而不是 size of the last duplicate counts 的增量发现了,所以总是重复计数。

至于怎么j++, i++作品——它只是一系列的表达。 Java 允许您使用逗号分隔计算结果相同类型的表达式。

<小时/>

根据评论,您可以删除外循环:

public static int numDuplicates (double[] list) {

int dupCount = 0;
for (int i = 1; i < list.length; i++) {
if (list[i] == list[i - 1]) {
dupCount++;
}
}
return dupCount;
}

关于Java - 在不使用外部类或方法的情况下计算数组中的重复项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49960934/

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