① 0异或其他数,结果都为该数本身 0^int(k)=k
② 数字本身进行异或,为0 k^k=0
方法一:
所以可以按照对数组中所有的元素进行异或,找出唯一一个不重复的元素。
class Solution:
def singleNumber(self, nums: List[int]) -> int:
nums.sort()
k=nums[0]
length=len(nums)
for i in range(1,length):
k=k^nums[i]
return k
方法二:
先排序,再找值
class Solution:
def singleNumber(self, nums: List[int]) -> int:
nums.sort()
n = len(nums)
for i in range(0,n,2):
# 提前处理可能溢出的情况
if i == n-1:
return nums[i]
if nums[i] != nums[i+1]:
return nums[i]