我是一个初学者,我正在练习一个关于 hackerrank 的问题。 我编写此代码是为了解决因大输入而超时的问题:
K = int(input())
roomnos = input().split()
setroomnos = set(roomnos)
for r in setroomnos:
if roomnos.count(r) == 1:
print(r)
break
下一个测试用例被法官接受
K = int(input())
roomnos = [int(i) for i in input().split()]
setroomnos = set(roomnos)
c = (K * sum(setroomnos) - sum(roomnos)) // (K - 1)
print(c)
您能否解释一下为什么第一个输入因大输入而超时而第二个输入正常 PS: 基本操作是找到一个在列表中只出现一次的 no,而不是其他出现 K 次的 no
最佳答案
您的第一个解决方案使用 O(n) for
,其中包含 O(n) count
- 导致 O(n^2) 复杂性。您的第二个示例不会以这种方式嵌套操作,因此复杂度为 O(n)。
关于python - python中输入过大如何处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36549640/