与えられた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;
}