已知数组中有两种数,一种为奇数次有一个,其余为偶数次,求奇数次的数
func printoddtimesnum1(arr []int) {
eor := 0
for i := 0; i < len(arr); i++ {
eor ^= arr[i]
}
fmt.Println(eor)
}
已知数组中有两种数,一种为奇数次有两个,其余为偶数次,求奇数次的数
func printoddtimesnum2(arr []int) {
eor := 0
temp := len(arr)
for i := 0; i < temp; i++ {
eor ^= arr[i]
}
// 拿出eor最右侧的1
rightone := eor & (-eor)
onlyone := 0
for i := 0; i < temp; i++ {
if (arr[i] & rightone) != 0 {
onlyone ^= arr[i]
}
}
fmt.Println(onlyone, (eor ^ onlyone))
}