基础位运算
lowbit
xor
xor:异或,同 0 异 1,又称进位加法。
a⨁a=0(1)
a⨁0=a(2)
Lc136
problem
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。
找出那个 只出现了一次 的元素。
idea
因为式(1),所以对所有元素进行异或,出现两次的元素异或之后都为 0,
因此变成了:
令 a=只出现一次的元素,则
a⨁0=a, 即为答案
code
1
2
3
4
5
6
7
|
func singleNumber(a []int) int {
res := 0
for i:=0;i<len(a);i++{
res ^= a[i]
}
return res
}
|