12345678910111213141516171819 |
- func singleNumber(nums []int) []int {
- n, a, b := len(nums), 0, 0
- for i := 0; i < n; i++ {
- a ^= nums[i]
- }
- mask := 1
- for mask & a == 0 {
- mask <<= 1
- }
- a = 0
- for i := 0; i < n; i++ {
- if nums[i] & mask == 0 { // Use the mask to split all nums into 2 groups
- a ^= nums[i]
- } else {
- b ^= nums[i]
- }
- }
- return []int{a, b}
- }
|