'''
#第一种简单解法,但至少需要o(n)复杂度,n为数组长度
class Solution:
def singleNumber(self, nums):
for num in nums:
if nums.count(num)==1:
return num
'''
#第二种解法
#数据结构解法【牛皮】
#只存在时间复杂度,不存在额外空间占用问题,这里使用异或(bits)运算,符号^,相同时为0,不同时为1
#异或有三个特征:
#1.任何数和 00 做异或运算,结果仍然是原来的数,即a⊕0=a。
#2.任何数和其自身做异或运算,结果是 00,即a⊕a=0。
#3.异或运算满足交换律和结合律,即a⊕b⊕a=b⊕a⊕a=b⊕(a⊕a)=b⊕0=b。
class Solution:
def singleNumber(self, nums):
a = 0
for num in nums:
a ^= num
return a
if __name__=='__main__':
nums=[4,1,2,2,1]
a=Solution()
print(a.singleNumber(nums))
【leetcode系列】小菜鸡的leetcode第6题:只出现一次的数字
最新推荐文章于 2022-11-30 17:02:33 发布