gpt4 book ai didi

java - issuesMostOften(int[] a) - java

转载 作者:行者123 更新时间:2023-12-02 07:39:57 27 4
gpt4 key购买 nike

我试图找到给定 int 数组中出现次数最多的数字。这是我的代码,它可以工作,但存在一些不一致的地方。另外,如果你能让我知道如何做得更好,我认为我的代码太长了!!

public static int countOccurrences(int[] a, int x) {
int count = 0;
for(int i=0;i<a.length;i++) {
if(a[i] == x) count++;
}
return count;
}

public static int occursMostOften(int[] a) {
int[] count = new int[a.length];
boolean[] duplicate = new boolean[a.length];
for(int i = 0; i < a.length;i++) {
if(duplicate[i] != true) {
count[i] = countOccurrences(a,a[i]);
duplicate[i] = true;
}
}
return a[maxIndex(count)];
}
private static int maxIndex(int[] a) {
int max = 0;
for(int i = 1; i<a.length;i++) {
if(a[i-1]<a[i]) max = i;
}
return max;
}

最佳答案

如果这是一个作业(我认为是这样),那么您的代码满足要求,尽管不是最优的。

如果您了解了一种称为“映射”的数据结构,请使用它。 map 中的将是数组中的值, map 中的是您看到该值的次数。

这将降低代码的复杂性。操作顺序为:

对于数组中的每个值

  1. 如果 map 中存在该值,则更新计数
  2. 如果没有,则创建一个计数为 1 的新条目

最后,您可以迭代映射以查找最常出现的值。

关于java - issuesMostOften(int[] a) - java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11737563/

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