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} }