たとえば、次の配列があります。
|4758322| 10000 | 5748883 |2754331|
そして、最も頻度の高い数字を持つ配列の数値を返す必要があります。この例では、メソッドは 10000 を返します。立ち往生していて、開始方法がわかりません。
ありがとう !
コードを提供しなかったため。なので私も書きません。
次のことを試してください:
配列内の各数値について、値がゼロになるまでモジュロ 10 を取得します。あなたはintを持つでしょう。したがって、数字に現れる各桁の回数を数えます。最高カウントを格納します。他の番号についても手順を繰り返します。そして、それぞれのカウントを比較します。最後に、カウントが最も高い番号を表示します
最初に問題のより単純なバージョンを解決しようとすることから始め、それを拡張して問題全体を解決しようとします。
最初に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;