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

2022-02-06 02:59:54 字數 573 閱讀 7599

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

思路:解法一:

雜湊表

class

solution

*num1 = v[0

]; *num2 = v[1

]; }

};

解法二:

利用異或

1、異或思想,乙個數與自己異或為0,乙個數與0異或為自己

2、由於其它數字兩兩相同,所以所有數異或則得到這兩個不同數的異或結果。取這個結果的第乙個1作為標誌位

3、這個標誌的1,必須是:這兩個數在該位乙個為0,乙個為1

4、這樣可以將陣列分為兩組,一組在該標誌位為1,一組在該標誌位為0,這兩個不同數字分別在這兩組內

5、將兩組內的數分別異或,得到兩個結果則為這兩個不同的數

class

solution

*num1 = 0

; *num2 = 0

;

for(auto c : data)

}};

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

乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次,請寫出程式找出這兩個只出現了一次的數字,要求時間複雜度為o n 空間複雜度為o 1 此時出了迴圈,tty為兩個只出現一次的數的異或值 現在需要確定tty的最低位1在哪個bit位 int index 0 int num1 0 int num2 0...

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

乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。解題思路 將陣列分成兩個陣列,每個陣列中包含乙個只出現一次的數字,其他都為出現兩次的數字。由於這兩個只出現一次的數字不相同,所以可以根據整個陣列異或的結果和1進行與操作,作為分割兩個陣列的位置。分割為兩個陣列...

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

題目描述 乙個整型陣列裡除了兩個數字之外,其他的數字都出現了偶數次。請寫程式找出這兩個只出現一次的數字。分析 1.因為有2個數字只出現了一次,而其他的數字都是2次,通過異或運算,最後可以得到這2個只出現一次的數字的異或結果值,這個值必然不為0。2.然後找出這個數字二進位制中,最低位為1的位數,必然這...