43億整數中查詢至少出現2次整數

2021-06-23 04:15:27 字數 575 閱讀 3813

問題:在43億整數中查詢至少出現2次整數;

方法:比較大的資料處理,第一時間想到位儲存;

1- 2^32= 4gb =4294967296 小於43億,所以說必定有重複的整數;

2- 儲存2^32= 4gb 的位資料  需要2^32/1024^2×8= 512m記憶體 

3-按套路來,首先開闢512m+1記憶體,清零---查詢是否為1,如果是說明至少出現2次,輸出即可,否者置1;

**:

#include#include#includeint set_bit(unsigned *bit ,unsigned n)

int testbit( unsigned *bit , unsigned n)

int main()

,b[10]=;//假設自有8個資料 測試

for (i = 0 ; i < 8 ; i++ )

set_bit( b , a[i] ); //置1

整數順序檔案查詢至少出現兩次的整數

programming pearls 2.2 給定包含4300000000個32位整數的順序檔案,如何找出乙個出現至少兩次的整數?方法一 思路 考慮兩個條件 1.所有的整數都儲存在順序檔案中,因此,讀取檔案的次數將明顯影響演算法的效率 2.順序檔案中包含的整數個數為4300000000,如果全部讀取...

只有2GB內存在20億個整數中找到出現次數最多的數

題目 有乙個包含20億個全是32位整數的大檔案,在其中找到出現次數最多的數 要求 記憶體限制2gb 解決辦法 把包含20億個數的大檔案用雜湊函式分成16個小檔案,根據雜湊函式的性質,同一種數不可能被雜湊到不同的小檔案上,同時每個小檔案中不同的數一定不會大於2億種,假設雜湊函式足夠優秀,然後對每乙個小...

40億個非負整數中找到出現2次的數和所有數的中位數

題目一 32位無符號整數的範圍是0 4294967295,現在有40億個無符號整數,可以使用最多1gb的記憶體,找出所有出現了兩次的數。題目二 記憶體限制在10mb,如何找到這40億個整數的中位數。解法思路 依然bit 陣列的思路,不過這次是雙倍長度了,因為我們除了要記錄這個數字,同時還有記錄他出現...