1
0
Fork 0
mirror of https://gitlab.com/mfocko/LeetCode.git synced 2024-09-19 17:56:55 +02:00
LeetCode/go/single-number-iii.go

34 lines
410 B
Go
Raw Normal View History

package main
func singleNumber(nums []int) []int {
reduce := func() int {
xor := 0
for _, x := range nums {
xor ^= x
}
return xor
}
xor := reduce()
findMask := func() int {
mask := 1
for (xor & mask) == 0 {
mask <<= 1
}
return mask
}
mask := findMask()
a := 0
b := 0
for _, x := range nums {
if (x & mask) != 0 {
a ^= x
} else {
b ^= x
}
}
return []int{a, b}
}