嗯试图通过python检查整数列表中是否存在重复值.这是成功的,我发现当列表的大小增加时执行时间越来越长.我怎样才能改善以下逻辑的运行时间?
def containsDuplicate( nums):
if len(nums) < 2:
return False
cnt = 0
flag = False
length = len(nums)
while cnt < length:
p = cnt + 1
while p < length:
if nums[cnt] == nums[p]:
flag = True
break
p += 1
cnt += 1
return flag
Run Code Online (Sandbox Code Playgroud)
Vin*_*ent 11
你可以使用一套:
>>> lst = [1, 2, 3]
>>> len(set(lst)) != len(lst)
False
>>> lst = [1, 2, 2]
>>> len(set(lst)) != len(lst)
True
Run Code Online (Sandbox Code Playgroud)
编辑:更快的版本,如评论中所指出的:
>>> lst = [3] + list(range(10**4))
>>> seen = set()
>>> any(x in seen or seen.add(x) for x in lst)
True
>>> seen
set([0, 1, 2, 3])
Run Code Online (Sandbox Code Playgroud)