136隻出現一次的數字
- 2020 年 7 月 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]))