我有一个整数数组: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
的每个元素确实在有效范围内。