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]))
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/85039.html
標籤:Python
上一篇:Pydantic
下一篇:Metaclass
