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

2021-08-17 22:42:00 字數 708 閱讀 6669

乙個整型陣列中除了兩個數字以外,其他數字都出現了兩次。請找出這個兩個數字

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。輸...