位運算解決只出現一次的數字

2021-10-24 17:21:36 字數 1436 閱讀 2915

1.有一組資料,只有乙個數字是出現一次,其他是兩次,請找出這個數字。

public

class

test

;int ret=0;

for(

int i =

0;i < num.length;i++

) system.out.

println

(ret);}

}

解題關鍵:a.0與任何數字進行異或運算結果都是那個數本身;

b.相同數字異獲結果是0;

c.a^b的結果在和a異或結果還是a;

通過0與陣列裡第乙個數異獲進入陣列中,然後和其餘數字進行異獲,由於乙個數字出現了一次,其餘數字出現了兩次,所以最後結果必然是0和那個出現一次的數字進行異獲,結果為出現一次的數字,直接輸出即可。

2.給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現了三次。找出那個只出現了一次的元素。

public

class

test

;int a =

singlenumber

(nums)

; system.out.

println

(a);

}public

static

intsinglenumber

(int

nums)

flag <<=1;

}}int ret =0;

for(

int i =

0;i <

32;i++

)return ret;

}

3.給定乙個整數陣列 nums,其中恰好有兩個元素只出現一次,其餘所有元素均出現兩次。 找出只出現一次的那兩個元素。

public

class

test

;int

single =

newint[2

];single =

singlenumbers

(nums)

; system.out.

println

(single[0]

);system.out.

println

(single[1]

);}public

static

int[

]singlenumbers

(int

nums)

;int a =0;

for(

int num:nums)

int b = a &

(-a)

;for

(int num:nums)

else

}return ret;

}}

位運算 只出現一次的的數字

異或的兩個值 相同為假,不同為真 交換兩個整數的值時可以不用第三個引數a a b a b b b a b a乙個只出現一次的數字。乙個整型陣列裡除了乙個數字之外,其他的數字都出現了偶數次。請寫程式找出這個只出現一次的數字。int num 0 if array.length 0 return num ...

位運算 只出現一次的的數字

異或的兩個值 相同為假,不同為真 交換兩個整數的值時可以不用第三個引數a a b a b b b a b a乙個只出現一次的數字。乙個整型陣列裡除了乙個數字之外,其他的數字都出現了偶數次。請寫程式找出這個只出現一次的數字。int num 0 if array.length 0 return num ...

位運算 只出現一次的數字III

給定乙個整數陣列 nums,其中恰好有兩個元素只出現一次,其餘所有元素均出現兩次。找出只出現一次的那兩個元素。示例 輸入 1,2,1,3,2,5 輸出 3,5 注意 結果輸出的順序並不重要,對於上面的例子,5,3 也是正確答案。你的演算法應該具有線性時間複雜度。你能否僅使用常數空間複雜度來實現?首先...