找出陣列中只出現過一次的數

2022-07-07 00:00:24 字數 463 閱讀 5791

乙個大陣列,在1到25000之間,只有4k memory, 列印出其中正好只出現過一次的數。沒出現過,出現過2次,3次,或更多,都不列印。

solutions:

1)位圖法,但每個數有3個狀態:0,1,>1.因此需要2 bit,  (25000 * 2) /(8*1024) = 6.1k,記憶體占用符合要求。

2)壓縮,解法1中,用2個bit表示3種狀態,事實上浪費了乙個狀態(2bit可以表示4種狀態),因此可以考慮多個數共用幾個bit表示狀態,如:

5個數共用4個bit來表示,則(25000/5) * 4 / ( 8*1024) = 2.44k,記憶體占用符合要求,但是**相對寫起來噁心些。

3)時間換空間,還是每個整數用2個bit表示,但分多次列印,如分5次掃瞄:第1次只掃1~5000內的整數,第2次只掃5001~10000的。。。

每次用記憶體:5000*2/(8*1024) = 1.22k,邏輯比較簡單,就是慢些。

找出陣列中只出現一次的數

今天來看一道有意思的題,看起來很簡單,但是要想到滿足要求的答案沒那麼容易。有乙個非空整形陣列,除了有乙個只出現過一次的數,其他的數都出現且只出現過兩次,現要求找出這個只出現過一次的數。時間複雜度不能超過 o n 而且不能使用額外空間。大概意思就是,比如從 5,5,8,8,6,9,9 陣列中找出 6 ...

找出陣列中只出現一次的數字

乙個整型陣列裡除了乙個數字以外,其他數字都出現了兩次。找出這個只出現一次的數字 異或運算 任何乙個數字異或它本身都等於0,如果從頭到尾異或陣列中的每乙個數字,那些出現兩次的數字全部在異或中會被抵消,最終的結果剛好是這個只出現一次的數字 package jbarray 找出陣列中只出現一次的數字 au...

找出陣列中只出現一次的數字

給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。package factory description 只出現一次的數字 author jaryn date 2019 12 2 16 36 public class onenumer return...