我无法发布比:(Python 3.6)更好的东西
N=int(input()) #count of input elements
a=[] #buffer
k=0 #counter
tel=0 #next number
for i in range(N):
tel=int(input())
if(not tel in a):
a.append(tel)
k+=1
print(k) #count of unique elements
但我的老师说我的解决方案不是很有效,因为我将数据保存到数组a
......
嗯......他还说我应该保存一些变量并永久重写它。
你知道这种情况吗?
UPD
“有效方式” - 程序必须使用尽可能少的内存,并尽可能快地运行
答案 0 :(得分:0)
您可以将列表转换为集合(将删除任何重复项)。集合的长度是原始列表中有多少个唯一元素。
示例:
print(len(set(int(input()) for _ in range(int(input())))))
答案 1 :(得分:0)
这就是我如何做到这一点,如果你的新手简单易懂。如果你担心表现,那就不行了。它太小的程序无法发挥作用。
N=int(input())
a=[]
k=0
#Don't need to create tel here! as you set it later
for i in range(N):
tel=int(input()) #creation of tel, not updating unless already defined
if tel != a: #simple way of what you need
a.append(tel)
k+=1
print(k)
如果你希望在完成后清除内存,请执行此操作。但我认为在做主要部分时你需要有一个阵列!
N=int(input())
a=[]
k=0
#Don't need to create tel here! as you set it later
for i in range(N):
tel=int(input()) #creation of tel, not updating unless already defined
if tel != a: #simple way of what you need
a.append(tel)
k+=1
a = []
print(k)