gpt4 book ai didi

java - 在数组中查找多个模式

转载 作者:行者123 更新时间:2023-12-04 06:01:35 24 4
gpt4 key购买 nike

我正在尝试编写一个 java 方法来查找数组中的所有模式。我知道有一种简单的方法可以在数组中找到模式,但是当有多个单一模式时,我的方法只输出其中一个。我试图找到一种方法,但我不确定如何解决这个问题。谁能帮我找出数组中的所有模式?谢谢。

是的,这是我的代码,即使存在多种模式,它也只输出一种模式。

public static int mode(int a[]){
int maxValue=0, maxCount=0;
for (int i = 0; i < a.length; ++i){
int count = 0;
for (int j = 0; j < a.length; ++j){
if (a[j] == a[i]) ++count;
}
if (count > maxCount){
maxCount = count;
maxValue = a[i];
}
}
return maxValue;
}

好的,这是一个例子:
30
30
30
34
34
23

在这组数字中,只有一种众数,即 30。

30
30
30
34
34
34
23

但是在这个集合中有两种模式,30 和 34。我希望我的代码能够输出这两种模式,而它只打印一种。它只打印 30。

最佳答案

以下代码将返回一个 Integer[]包含模式。如果您需要 int[]相反,您仍然需要转换 Integer实例到 int s 手动。可能不是最有效的版本,但它与您的代码非常匹配

public static Integer[] mode(int a[]){
List<Integer> modes = new ArrayList<Integer>( );
int maxCount=0;
for (int i = 0; i < a.length; ++i){
int count = 0;
for (int j = 0; j < a.length; ++j){
if (a[j] == a[i]) ++count;
}
if (count > maxCount){
maxCount = count;
modes.clear();
modes.add( a[i] );
} else if ( count == maxCount ){
modes.add( a[i] );
}
}
return modes.toArray( new Integer[modes.size()] );
}

关于java - 在数组中查找多个模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8858327/

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