面試題 三進製異或

2021-06-18 06:55:19 字數 610 閱讀 7104

#面試題#

陣列a中,除了某乙個數字x之外,其他數字都出現了三次,而x出現了一次。請給出最快的方法,找到x。

分析:假設該題目修改為:除了某乙個數字x之外,其他數字都出現了兩次,而x出現了一次。 則可以把所有數字直接求異或,最終的結果就是x。這個很好理解。

而該題目是其他數字都出現了三次,可以想到三進製異或運算。其實異或運算的本質就是

求和 % base

。 比如 1 ^ 1 = 0  其實就是 (1+1) % 2 = 0。 因此只要按位求和,最後再將每位結果 模除 3,再轉換為二進位制即是答案x。

**如下:

#include 

using namespace std;

int main() ;

int num;

int i;

while (cin >> num)

}int x = 0;

for (i = 99; i >= 0; i--)

for (; i >= 0; i--) {

if (a[i] % 3 != 0) {

x += (1<

面試題 異或去重

異或是一種基於二進位制的位運算,用符號xor或者 表示,其運算法則是對運算子兩側數的每乙個二進位制位,同值取0,異值取1。它與布林運算的區別在於,當運算子兩側均為1時,布林運算的結果為1,異或運算的結果為0。異或的性質 滿足交換律和結合律 1 交換律 a b b a 2 結合律 a b c a b ...

面試題 異或經典思維題目

題目 已知陣列中數字兩兩相同,有兩個不同,找出這兩個不相同的數字 解答過程 如果陣列中只有乙個數字的話,那麼我們就可以直接異或就ok了,但是現在有兩個的話就會有點麻煩了,所以就有乙個非常精彩的思想。首先我們將所有的數字進行異或,結果肯定不會為0所以我們將其進行位運算的話一定會有第index位是1,所...

基礎演算法面試題 異或運算

異或是乙個數 算符,應用於邏輯運算,計算機符號為 eor 在二進位制中,規則為 1 0 1 1 1 0 0 0 0 也就是相同為0,不同為1,也可以理解為不帶進製的二進位制加法。舉例 5 3 6 5二進位制 0 1 0 1 3二進位制 0 0 1 1 異或 0 1 1 0 6 1 歸零率 a a 0...