題目:
已知陣列中數字兩兩相同,有兩個不同,找出這兩個不相同的數字
解答過程:
如果陣列中只有乙個數字的話,那麼我們就可以直接異或就ok了,但是現在有兩個的話就會有點麻煩了,所以就有乙個非常精彩的思想。
首先我們將所有的數字進行異或,結果肯定不會為0所以我們將其進行位運算的話一定會有第index位是1, 所以我們將其分為兩組,一組是第index位是1的數,另一組是第index位是0的數,而這兩組數中,那兩個不同的數字一定是分開的,所以我們將這兩組數字分別進行異或就找出來了。
my code:
#include
#include
using
namespace
std;
typedef
long
long ll;
typedef
unsigned
long
long ull;
const
int maxn = 1e6+5;
int a[maxn];
int main()
int num1 = 0, num2 = 0;
for(int i=0; iif((a[i]>>index) & 1)///第 index 位是 1 的
num1 ^= a[i];
else
///第 index 位是 0 的
num2 ^= a[i];
}cout
<" "
0;}
python經典面試題目
print set a set b a,b中相同的元素 print set a set b a,b中不同元素list 1 a b c b a list 1 list set list 1 print list 1 alist defsort by age alist return sorted al...
經典C 面試題目
1 在c 中,string str null 與 string str 請盡量使用文字或圖象說明其中的區別。回答要點 說明詳細的空間分配。10分 答 string str null 是不給他分配記憶體空間,而string str 給它分配長度為空字串的記憶體空間.請詳述在dotnet中類 class...
面試題 三進製異或
面試題 陣列a中,除了某乙個數字x之外,其他數字都出現了三次,而x出現了一次。請給出最快的方法,找到x。分析 假設該題目修改為 除了某乙個數字x之外,其他數字都出現了兩次,而x出現了一次。則可以把所有數字直接求異或,最終的結果就是x。這個很好理解。而該題目是其他數字都出現了三次,可以想到三進製異或運...