【发布时间】:2012-03-22 16:53:18
【问题描述】:
我有一个数组,大小可以达到 10000。它只包含 1/2/3/4。我需要找出数组中有多少个 1、2、3 和 4。最快的方法是什么?我使用的语言是 Java。我的一段代码-
for(int i=0; i<myArray.length;i++){
int element = myArray[i];
if(element == 1){
onesCount++;
}
else if(element == 2){
twosCount++;
}
else if(element == 3){
threesCount++;
}
else
foursCount++;
}
我希望有一个好的解决方案。
【问题讨论】:
-
您想要快速的方法,还是最快的方法? :)
-
因为无论如何你都要解析整个数组,所以无论你怎么做,你的运行时间都必须是
O(n)。 -
您可以通过线程来实现类似的操作,其中每个线程可以计算数组中特定范围元素的出现次数,线程 1 计算前 2000 个元素的出现次数,依此类推。
-
@sans481,您看到您的解决方案似乎非常好。实际上有一些微优化是可能的(当然值得一试)。既然我们都在谈论它们,我想指出,您可以使用前缀增量(或分别为 decr)来“加速”您的循环;)see this quesion
标签: java arrays performance search