时间复杂度:O(n),空间复杂度:O(1)
解题思路
利用异或运算的性质,一个数与0异或为自身,与自身异或为0,所以让整个数组元素异或,最终结果就是那个只出现1次的数字!
AC代码
func singleNumber(nums []int) (res int) {
for _,num:=range nums{
res^=num
}
return res
}
感悟
一开始想到了map,再仔细读遍题发现要求不使用额外空间,这就难住我了。想了半天没想出来个方案。之后注意到标签为位运算,我就想这和位运算有什么关系。
憋了十分钟,看了眼题解,原来是用异或啊……