通常都會說 Python 的 set 內部是用 hash table 來實作,所以是 O(1),但為什麼這樣就是 O(1)?
當要判斷某個元素是否在 set 裡面時,它的 __hash__() 會被用來得到 hash 值,可以把這個 hash 值視為 set 底層實作的 array 的 index,Python 接著會用這個 hash 值去那個 array 的對應位置找,然後發現 array 沒有這個位置,或是找到對應 value,而這個過程跟 set 裡的元素個數無關,所以是 O(1)
而這邊說的 O(1) 是平均時間複雜度,最壞情況時間複雜度是 O(n),