我有一个整数数组:int[] numbers = new int[...n]; // n being limitless.

所有数字都在0到100之间。

numbers[]等于:[52, 67, 32, 43, 32, 21, 12, 5, 0, 3, 2, 0, 0];

我想计算一下每个数字出现的频率。

我有第二个数组:int[] occurrences = new int[100];

我希望能够存储这样的金额:

for(int i = 0; i < numbers.length; i++) {
   // Store amount of 0's in numbers[] to occurrences[0]
   // Store amount of 1's in numbers[] to occurrences[1]
}


因此occurrences[0]等于3,occurrences[1]等于0等等。

是否有任何有效的方法可以执行此操作而无需诉诸外部库?谢谢。

最佳答案

您可以简单地执行以下操作:

for (int a : numbers) {
    occurrences[a]++;
}


另外,如果您的意思是0到100(含0和100),则occurrences的大小必须为101(即100为最大索引)。

您可能还想执行一个“断言”,以确保在更新numbers之前occurrences的每个元素确实在有效范围内。

09-15 14:03