lc-go/solutions/1/q137/solution.go

23 lines
452 B
Go

// Package q137 implements a solution for https://leetcode.com/problems/single-number-ii/
package q137
func singleNumber(nums []int) int {
bitCounts := make([]uint8, 32)
for _, num := range nums {
num32 := int32(num)
for i := range 32 {
if num32|1<<i == num32 {
bitCounts[i] = (bitCounts[i] + 1) % 3
}
}
}
var ret int32
for i := range 32 {
if bitCounts[i] != 0 {
ret |= 1 << i
}
}
return int(ret)
}
var _ = singleNumber