3+3-5+3=4
滿3升桶--〉倒進5升桶里
滿3升桶--〉倒進5升桶里--〉3升桶里最后會留1升
倒干凈5升桶
把3升桶里的1升水倒進5升桶里
再裝滿3升桶--〉倒進5升桶里---〉共4升
--------------------------------------------------------------
給定a、b兩個文件,各存放50億個url,每個url各占用64字節,內存限制是4G,如何找出a、b文件共同的url?
分析:我們先來看如果要把這些URL全部加載到內存中,需要多大的空間。
1MB = 2^20 = 10^6 = 100W
1GB = 2^30 = 10^9 = 10億
50億 = 5G * 64 Byte = 320G
分別掃描A,B兩個文件,根據hash(url)%k(k為正整數,比如k = 1000,那么每個小文件只占用300M,內存完全可以放得下)將url划分到不同的k個文件中,比如a0,a1,....a999;b0,b1,...b999;
這樣處理后相同的url肯定在對應的小文件中(a0 vs b0,a1 vs b1,...a999 vs b999)因為相同的url%1000的值肯定相同,不對應的小文件不可能有相同的url;
然后我們只要求出1000對小文件中相同的url即可。比如對於a0 vs b0,我們可以遍歷a0,將其中的url存放到hash_map中,然后遍歷b0,如果b0中的某個url在hash_map中,則說明此url在a和b中同時存在,保存下來即可。
--------------------------------------------------------------------
四棵樹種成空間的正四面體可以兩兩之間距離相同
--------------------------------------------------------------------
兩個數不借助第三個數交換
a=a+b
b=a-b
a=a-b
------------------------------------------------------
5五只貓5分抓5只老鼠,100分抓100只老鼠多少只貓
5只(將5只看成一個整體)
----------------------------------------------------------
八個小球,有一個重,稱兩次