n = int(input())
s = set()
for i in range(n):
l = input().split()
if l[0] == '1':
continue
for j in l[1:]:
s.add(j)
m = int(input())
l = input().split()
ls = []
ll = set()
for i in l:
if (i not in s) and (i not in ll):
ls.append(i)
ll.add(i)
if len(ls) == 0:
print('No one is handsome')
else:
print(' '.join(ls))
做这题时遇到数据结构的一个问题
首先是我一开始的答案
但在最后一个案例验证时一直运行超时
但一直不知道在那里改进
n = int(input())
s = set()
for i in range(n):
l = input().split()
if l[0] == '1':
continue
for j in l[1:]:
s.add(j)
m = int(input())
l = input().split()
ls = []
for i in l:
if (i not in s) and (i not in ls):
ls.append(i)
if len(ls) == 0:
print('No one is handsome')
else:
print(' '.join(ls))
查询了一些其他的答案后
我意识到 in 函数的时空复杂度其实挺高的
我想 in 函数应该是对元素序列进行遍历
而最后一个测试案例应该挺大的
而我程序最后在查找帅不帅的人时有两个 in
所以时空复杂度蹭蹭的往上涨
最后没办法就采用了网上的一种方法
将两个 in 所遍历的元素序列分成两部分
但我还是不太理解
这两个差在哪里
记录一下,想找个师傅了,不然碰到一些问题真的挺烦的
等过段时间学学数据结构再来看看吧