0
給定一個非常大的陣列,分配在HDD = {1,1,5,7,8,1,6,10,20,1}上我們需要找出存在多少不同的值。所提到的陣列的解決方案是7,7個不同的總數{1,5,6,7,6,10,20}。沒有必要保存號碼。查找有限空間陣列中不同值的數量
給出了一些提示,我需要在HDD和RAM上工作。但是,HDD明顯大於RAM。所以如果所有值都不同,就不能使用散列表和鏈表。從我的理解,我需要分配K常量固定大小的數組(每個m個元素)。在那之後,我需要填充所有k個數組,將它們中的一個排序。然後比較它們並計算不同的部分並再次填充它們,直到完成硬盤上分配的所有值爲止。我的問題是最後一部分,一旦數組排序後,我需要做什麼?
編輯:rutime例如,HDD可以含有10^10個記錄,RAM可以僅保持10^5, 和K = 10,M = 10,對於處理的每個陣列,有必要以讀取下一個M值到該特定數組。
應該只有一個計數器,說明不同的數值。最大的數字可能是N
謝謝
數字可以任意大嗎? – biziclop
問題最初是用字符串表示的,對於給定的解決方案,可以說最大的數字可以是100 –
如果它是任何字符串,布盧姆過濾器可能會有所幫助,但如果可能值的數量很小,答案很簡單,只需創建一個100位的位字段並設置與該值相對應的位。 – biziclop