作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图找到给定 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 中的值是您看到该值的次数。
这将降低代码的复杂性。操作顺序为:
对于数组中的每个值
最后,您可以迭代映射以查找最常出现的值。
关于java - issuesMostOften(int[] a) - java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11737563/
我是一名优秀的程序员,十分优秀!