137.只出现一次的数字II
137.只出现一次的数字II
题解
思路:对于出现三次的数字,各 二进制位 出现的次数都是 33 的倍数。因此,统计所有数字的各二进制位中 11 的出现次数,并对 33 求余,结果则为只出现一次的数字。
代码
package main func singleNumber(nums []int) int { var result int for i := 0; i < 64; i++ { sum := 0 for j := 0; j < len(nums); j++ { sum += (nums[j] >> i) & 1 //统计所有元素第i位1的个数 } result ^= (sum % 3) << i //将第i位余3后还原 } return result }