我得到N
int输入,我想检查是否重复输入。简单的方法就是使用列表并检查是否包含新输入。但是,对于我来说,我知道我的输入是< N
,所以我可以列出一个列表
l = [0]*N
然后检查,
def getinputs(N):
state = 1
l = [0]*N
for _ in range(N):
i = int(input())
if l[i] != 0:
l[i] += 1
else:
state = 0
return state
这里的问题是,如果N >> 1,则列表的大小非常大,这会导致问题。有没有更聪明的方法来查看是否重复输入?
使用一组:
s = set()
s.add(3)
4 in s
# False
3 in s
# True
比起检查重复的列表,它要好得多,因为它是O(1)而不是O(n)
如果要计算重复次数,请使用字典:
d = {}
d[1] = d.get(1, 0) + 1
字典还具有O(1)查找