簡體   English   中英

Java(計數不同的整數)

[英]Java ( Counting Distinct Integers )

例如,如何返回數組中不同/唯一值的數量

int[] a = {1,2,2,4,5,5};
Set<Integer> s = new HashSet<Integer>();
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 MB的字節數組(每個位代表存在或不存在)可能是有意義的-整數的存在,然后最后計數設置的位數。

二叉樹方法將花費n * log n時間,而數組方法將花費n時間。 另外,二叉樹每個節點需要兩個指針,因此您的內存使用量也會高很多。 類似的考慮也適用於哈希表。

當然,如果您的集合很小,則只需使用內置的HashSet。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM