配列の中で最も頻度の高い値を検索し、その後、タイがある場合は、最も低い値を選択します

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]]より今まで大きいmaxCountmaxKey無効にすることが、最も頻繁に発生する要素となります。

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

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=188579&siteId=1