0

たとえば、次の配列があります。

|4758322| 10000 | 5748883 |2754331|

そして、最も頻度の高い数字を持つ配列の数値を返す必要があります。この例では、メソッドは 10000 を返します。立ち往生していて、開始方法がわかりません。

ありがとう !

4

2 に答える 2

3

コードを提供しなかったため。なので私も書きません。
次のことを試してください:

配列内の各数値について、値がゼロになるまでモジュロ 10 を取得します。あなたはintを持つでしょう。したがって、数字に現れる各桁の回数を数えます。最高カウントを格納します。他の番号についても手順を繰り返します。そして、それぞれのカウントを比較します。最後に、カウントが最も高い番号を表示します

于 2013-11-13T08:05:58.960 に答える
0

最初に問題のより単純なバージョンを解決しようとすることから始め、それを拡張して問題全体を解決しようとします。

最初に1つの整数から数字の頻度を取得しようとします。これにより、残りの問題がほとんど解決されます。

public static int maxFrequency(int number){
    int[] array = new int[(number)+"".length()];
    int max = 0;
    while(number != 0){
        array[number%10] += 1
        if(max < array[number%10]){
            max = array[number%10];
        }
        number = number/10;
    }
    return max;
}

次に、このメソッドを使用して配列内のすべての要素に拡張し、最大のものを選択します。

int[] a = {4758322, 10000 , 5748883 ,2754331};
    int max = 0;
    int target = 0;

    for(int i : a){

        int maxFrequencyi = maxFrequency(i);
        if(max < maxFrequencyi){
            max = maxFrequencyi;
            target = i;
        }
    }
  return target;
于 2013-11-13T08:53:16.440 に答える