我是一个初学者,我在练习一个关于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)复杂性也是如此。你知道吗相关问题 更多 >
编程相关推荐