WoeIs:
私は、アレイ「」とし、出力最も頻繁に現れる配列の値を検索し、次のプログラムを持っています。しかし、私が実現したいことを一つの他の条件は、2つの異なる値が時間の等しい量を表示さ同数の場合に、最小値は、出力を取得することです。
配列と次のコードのためにそう:
int a[] = {34, 34, 20, 20, 15};
それは低い値で、配列内だけで何回も表示されますので、私は、代わりに、出力20にそれをしたいしかし、それは34を出力します。
public class Arrays3 {
public static void main(String[] args){
int a[] = {34, 34, 20, 20, 15};
mode(a);
}
public static int mode(int[] a) {
int[] counts = new int[101];
int maxCount = 0;
int maxKey = 0;
for(int i = 0; i < a.length; i++) {
counts[a[i]]++;
if(counts[a[i]] > maxCount) {
maxCount = counts[a[i]];
maxKey = a[i];
}
}
System.out.println(maxKey);
return maxKey;
}
}
GBlodgett:
あなたはに対してチェックすることができmaxKey
、その後の線に沿って何かを実行します。
if(counts[a[i]] == maxCount && counts[a[i]] < maxKey) {
maxKey = counts[a[i]];
}
だから、タイは、これまで存在している場合は、そのmaxKey
小さな要素に設定されます。場合は、count[a[i]]
より今まで大きいmaxCount
、maxKey
無効にすることが、最も頻繁に発生する要素となります。
for(int i = 0; i < a.length; i++) {
counts[a[i]]++;
if(counts[a[i]] > maxCount) {
maxCount = counts[a[i]];
maxKey = a[i];
}
if(counts[a[i]] == maxCount && counts[a[i]] < maxKey) {
maxKey = a[i];
}
}
System.out.println(a[maxKey]);
出力
20