from typing import List
class Solution:
# 第一种是我想的办法
def singleNumber(self, nums: List[int]) -> int:
# 最先开展排列
nums.sort()
# 随后分辨反复的数据,数字能量数组中的数据必然为单数个 ,
# 假如循环系统沒有跳出来,那麼数字能量数组的最后一个数据一定为不反复的数据
for index in range(1,len(nums),2):
if nums[index] != nums[index - 1]:
return nums[index -1]
return nums[-1]
# 第二个回答是官方网解释
def singleNumber1(self, nums: List[int]) -> int:
# 位运算,任何数和零位计算都为省内
# 位运算 ,是二进制的异或运算 。
# 100 ^ 110 = 10 #它是二进制。
# 这就等同于将数字能量数组中的每一个数都溶解为二进制。
# 随后将每一位开展异或运算 。最终留下的二进制便是沒有反复的 。
num = 0
for index in range(len(nums)):
num ^= nums[index]
return num
A = Solution()
print(A.singleNumber1([1,2,2,3,3,4,4]))
print(A.singleNumber1([1,1,2,2,3,3,4,4,5]))
文章来源于网络 ,如有侵权请联系站长QQ61910465删除
本文版权归去快排wWw.seogUrublog.com 所有,如有转发请注明来出,竞价开户托管,seo优化请联系qq❉61910465