内存重复输入是否有效

问题描述 投票:0回答:1

我得到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,则列表的大小非常大,这会导致问题。有没有更聪明的方法来查看是否重复输入?

python memory
1个回答
3
投票

使用一组:

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)查找

© www.soinside.com 2019 - 2024. All rights reserved.