劍指offer 陣列中只出現一次的數字(陣列)

2021-09-02 02:37:39 字數 551 閱讀 6613

乙個整型陣列裡除了兩個數字之外,其他的數字都出現了偶數次。請寫程式找出這兩個只出現一次的數字。

這題想到用map,類似於「陣列中出現次數超過一半的陣列」

其中,data[i]是key值,出現次數count為value值。

方法一:這個方法比較容易想到,思路也比較簡單。

這個就是典型的用空間換時間了,時間複雜度是o(n)。

class solution 和。這樣就可以對著兩組分別再一次用異或的方法,相同的數異或得到0,最後異或的結果分別是a,和b。

對於異或得到不同的乙個數,大家玩過撲克牌的一種玩法抽烏龜嗎,這就是玩抽烏龜的那種感覺!相同的牌可以想象是被扔出去了!反正異或之後都是0!最後就只剩乙個不同的數就是烏龜!

class solution {

public:

if(data.size()<2)

return ;

int len=data.size();

int temp=0;

int index=1;

for(int i=0;i空間複雜度是o(n),時間複雜度也比方法一要低。

劍指offer 陣列中只出現一次的數字

1 乙個數字出現一次,其他數字出現兩次 兩個相同的數異或為0,所以將陣列裡的所有數依次異或,得到的結果就是只出現一次的數。include using namespace std int main int num 0 for int i 0 i 7 i cout 2 乙個數字出現一次,其他數字出現n次...

劍指offer 陣列中只出現一次的數字

乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。解法 首先考慮如果陣列中只有乙個數字出現一次,其他的數字都出現兩次,怎麼找出這個只出現一次的數字?這裡需要用到異或運算的性質 乙個數字 不管是什麼形式的數字,只要其二進位制形式確定 和其自身的異或運算的結果一...

《劍指offer》 陣列中只出現一次的數字

乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。解法 1.了解幾個常識 a.了解兩個相同的數字異或結果為0 b.任何數字與0進行異或結果為數字本身 c.任何數字與1相與,只有最低位 右邊 為1時候,才等於1 2.一種對陣列分成兩組的方法,比如2 10 和3...