一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字
class Solution:
def SingleNumber(nums):
res = 0
if not nums:
return res
for i in nums:
res ^= i
return nums
// 题目:一个整型数组里除了一个数字之外,其他的数字都出现了两次
// 证明:我们把每个比特分开来看,有题目可知,每个元素出现两次,只有一个元素出现一次,那么,我们只需要保留每一位比特的出现单数次的符号就可以了
// 比如: [4, 1, 2, 1, 2] 用二进制表示
// 0 1 0 0
// 0 0 0 1
// 0 0 1 0
// 0 0 0 1
// 0 0 1 0
// 所以 第一位0出现单数次,我们取0
// 第二位, 1 出现单数次, 我们取1
// 第三位,0 出现单数次,我们取0
// 第四位,0 出现单数次,我们取0
// 所以 结果位 0100, 以上的操作用xor按顺序运行过来就可以
package main
func SingleNumber(nums []int) int {
res := 0
for _, num := range(nums) {
res ^= n
}
return res
}
网友评论