**
只出现一次的数字
**
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素
解题思路
首先想到了用暴力搜索的方式,新建一个 list,对nums中的元素逐一迭代,判断元素是否在s中,如果s存在迭代的元素,则否定该元素,直到找到唯一的数字,这个思路最容易想到,代码也很容易写出就不展示了,但是最后结果肯定是超时,因为题目的考察重点不在于此。同样用python自带的list.count(i)的方式也会超时,因为本质上还是在暴力搜索。
因为只有一个元素是出现一次的,很容易想到了异或运算,二进制位相同为0相异为1,这样可以用一个变量做筛选,只需要len(nums)次异或运算就能找到结果,尝试解题方案如下
class Solution:
def singleNumber(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
temp = 0
for i in nums:
temp = temp ^ i
return temp