L1-020 帅到没朋友 (20分)

本文通过对比两种不同的Python代码实现方式,探讨了如何优化数据结构操作以减少时间复杂度,特别是在处理大量数据时的效率提升。作者最初的方法在处理最后一个案例时运行超时,通过将两次成员资格检查分开并使用集合来存储已处理的数据,显著提高了程序的执行效率。
摘要由CSDN通过智能技术生成
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 所遍历的元素序列分成两部分

但我还是不太理解

这两个差在哪里

记录一下,想找个师傅了,不然碰到一些问题真的挺烦的

等过段时间学学数据结构再来看看吧

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值