Java(计算不同的整数)

例如,如何返回数组中不同/唯一值的数量

int[] a = {1,2,2,4,5,5}; 

 Set s = new HashSet(); for (int i : a) s.add(i); int distinctCount = s.size(); 

一个集合只将一个唯一的(由.equals()定义)元素存储在其中,您可以使用它来简化问题。 创建一个Set(我使用HashSet),迭代你的数组,将每个整数添加到Set,然后返回Set的.size()。

一种有效的方法:使用Arrays.sort对数组进行Arrays.sort 。 写一个简单的循环来计算相邻的相等值。

真的取决于数组中元素的数量。 如果你没有处理大量的整数,那么HashSet或二叉树可能是最好的方法。 另一方面,如果你有一个大的不同整数数组(比如超过十亿),那么分配一个2 ^ 32/2 ^ 8 = 512 MByte字节数组可能是有意义的,其中每个比特代表存在或不存在 – 存在一个整数,然后计算最后的设置位数。

二叉树方法需要n * log n时间,而数组方法需要n次。 此外,二叉树每个节点需要两个指针,因此您的内存使用量也会高很多。 类似的考虑也适用于哈希表。

当然,如果你的设置很小,那么只需使用内置的HashSet。