136只出現一次的數字

月為暮發表於2020-07-15
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]))

相關文章