【Leetcode】python - [137] Single Number II 個人解法筆記

題目出處

137. Single Number II

難度

medium

個人範例程式碼 - (非題目要求空間)解

class Solution:
    def singleNumber(self, nums: List[int]) -> int:
        counter = Counter(nums)
        for key, value in counter.items():
            if value == 1:
                return key

最近在練習程式碼本身就可以自解釋的 Coding style,可以嘗試直接閱讀程式碼理解

算法說明

先來簡介一下題目的要求,
題目要求這題,希望能夠「在線性時間 O(n) 完成 」且「使用常數空間 O(1)」,

  • 使用常數空間的方法,我們直覺會想到用 sort()
  • 線性時間的方法,我們直覺會想到用 hashtable()

但如果要同時滿足兩者,我們需要使用特別的方法,
在這題會需要使用到 bit 的運算,但由於面試準備中這比較少見,
因此這邊只點出思路,不是示範對應做法。

而上方我們示範的是利用 hash 做出 counter 的做法,
統計並找出 counter 中數量為 1 的結果。

input handling

x

Boundary conditions

x

Reference