gpt4 book ai didi

Java方法从整数数组返回众数

转载 作者:行者123 更新时间:2023-12-02 04:04:58 26 4
gpt4 key购买 nike

如何编写一个接受整数数组并返回众数的方法。如果有多个众数,则应返回第一个

到目前为止,我已经知道了,它在大多数情况下都有效,但我不明白为什么它会返回该模式的第一次出现。

public static int mode(int[] a) {

int temp,temps;

for(int i=0;i<a.length-1;i++) {
temp=countRepititions(a,a[i]);
temps=countRepititions(a,a[i+1]);

if(temp>temps) {
return a[i];
} else if(temps>temp) {
return a[i+1];
}
}

return a[0];
}

最佳答案

问题:

您正在比较第一个和第二个元素的计数并返回模式,而不检查完整的数组(如果前两个元素不同)。

    if(temp>temps) {  // For 766888 temp = 1 temps = 2 and 6 is returned.
return a[i];
} else if(temps>temp) {
return a[i+1];
}

解决方案:

  • 对于当前算法:遍历完整数组并在每次遍历时存储 maxRepCount(任何整数的最大重复计数)和 maxRepIdx(最大重复数索引)。最后返回a[maxRepIdx];复杂度:O(n^2)
  • 更简单的算法:对数组进行排序 (O(nlogn)),然后使用 maxRepCount 和 maxRepIdx 遍历数组 (O(n))。最后返回a[maxRepIdx];

关于Java方法从整数数组返回众数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34408814/

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