def firstMissingPositive(self, A):
least = 1024*1024*1024
# worst case n ops
for i in A:
if i < least and i > 0:
least = i
if least > 1:
return 1
else:
# should be O(n)
A_set = set(A)
# worst case n ops again
while True:
least += 1
if least not in A_set:
return least
我只問,因爲它對於給定的問題似乎太簡單了,這裏的大多數人可能在Leetcode或類似的地方看過。在Python的set或dict的實現中有沒有我不知道的東西?查找應該是O(1),根據我的理解,將列表轉換爲集合應該是O(n)。下面的函數是O(n)時間和O(1)空間,其中n = | A |?
顯然不是O(1)空間。 –
是否可以將數組更改爲哈希映射來克服該部分?我認爲那是有的,並沒有太注意它。 – szhongren
也許在理論上,但你的代碼沒有這樣做,它可能不會有用,因爲你會處理的加載因子爲1. – user2357112