乙個整型陣列中除了兩個數字以外,其他數字都出現了兩次。請找出這個兩個數字
1、利用異或原理。異或中又m^m=0,即兩個相同的數字異或得0;
2、該題目有乙個簡化版本為:
乙個整型陣列中除了(一)個數字以外,其他數字都出現了兩次。請找出這個乙個數字!!
answer: 對陣列遍歷異或,最後的結果即為只出現一次的數字。
對於本題:以相同思想來處理。
a、遍歷陣列異或,得到最後的結果為res, 假設這兩個出現1次的數字為a與b。那麼res=a^b。
b、由於a與b不相同。那麼res的結果一定不會為0,同時res用二進位制表達的二進位制數中至少存在
某一位上的數字不0。假設res的二進位制表達為:xyz100
c、說明a與b在從右往左數的第3個位置上存在如下情況:
a與b的二進位制表達的數中,一定有某個數在第3個位置上為0,另外乙個數在第3個位置上為1
d、通過c中的描述重新將原陣列分成兩堆,即每一堆中都滿足:
乙個整型陣列中除了1個數字以外,其他數字都出現了兩次。請找出這個數字!!
**如下:
if(data.size()==0||data.empty())
return;
int n = data.size();
int a_b=0;
num1[0] =0;
num2[0] =0;
for(int i =0;i
37 陣列中只出現一次的數字
陣列中只出現一次的數字 乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。這道題思路想出來後就很簡單了,可是我卻寫錯了乙個地方,導致除錯了很久。37.cpp 定義控制台應用程式的入口點。include stdafx.h include using names...
面試題37 陣列中只出現一次的數字
題目 整型陣列中除了兩個數字之外,其他的數字都出現兩次,找出這兩個只出現一次的數字 思路 利用異或運算的性質 任何乙個數字異或自己都等於0 1.從頭到尾依次異或陣列中的每個數字,最終得到的結果就是兩個只出現一次的數字的異或結果 2.異或結果的二進位制表示中至少有一位為1,找到結果數字中第乙個為1的位...
陣列中只出現一次的數字
何海濤 劍指offer 名企面試官精講典型程式設計題 九度oj 題目描述 乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。輸入 每個測試案例包括兩行 第一行包含乙個整數n,表示陣列大小。2 n 10 6。第二行包含n個整數,表示陣列元素,元素均為int。輸...