137.M 只出现一次的数字 II
思路
Code
func singleNumber(nums []int) int {
freq := make(map[int]int)
for _, num := range nums {
freq[num]++
}
for k, v := range freq {
if v == 1 {
return k
}
}
return -1
}Last updated
func singleNumber(nums []int) int {
freq := make(map[int]int)
for _, num := range nums {
freq[num]++
}
for k, v := range freq {
if v == 1 {
return k
}
}
return -1
}Last updated
func singleNumber(nums []int) int {
ans := int32(0) //不加int32强转回导致负数case有问题
for i := 0; i < 32; i++ {
sum := 0
for _, num := range nums {
sum += (num >> i) & 1
}
// 如果sum为3的倍数为1,说明3个相同的位为0或者1,而且结果的当前位为1
if sum%3 == 1 {
ans |= 1 << i
}
}
return int(ans)
}