面試題 異或經典思維題目

2021-07-29 10:47:41 字數 946 閱讀 7607

題目:

已知陣列中數字兩兩相同,有兩個不同,找出這兩個不相同的數字

解答過程:

如果陣列中只有乙個數字的話,那麼我們就可以直接異或就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。這個很好理解。而該題目是其他數字都出現了三次,可以想到三進製異或運...