数字中之出现一次的数字

题目链接

题目思路

位运算 即可

go解法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
func singleNumbers(nums []int) []int {
numbers := make([]int, 2)
var flag int

for i := 0; i < len(nums); i++ {
flag ^= nums[i]
}

div := 1

for (div & flag) == 0 {
div <<= 1
}
numbers[0] = 0
numbers[1] = 0
for i := 0; i < len(nums); i++ {
if (div & nums[i]) == 0 {
numbers[0] ^= nums[i]
} else {
numbers[1] ^= nums[i]
}
}

return numbers
}