我有一个问题,我需要将项目添加到列表中。它必须使用stdin,并且在Θ(n)中。我似乎只能用Θ(n ^ 2)得到它。这是我的代码:
for i in range(int(r1)): # size of list being made
for line in sys.stdin.readline().strip().split(" "):
a.append(line)
Input: Output: [1, 2, 3]
1
2
3
据我所知,它在Θ(n ^ 2)。我试过这样做:
for i in range(int(r1)): # size of list being made
a.append(sys.stdin.readline().strip().split(" "))
Input: Output: [[1], [2], [3]]
1
2
3
因为第二次尝试的元素在他们自己的子列表中,所以它们不适用于我的程序的其余部分。任何adivce?
你尝试过使用extend而不是append吗?
a.extend(sys.stdin.readline().strip().split(" "))
解释是在这个question
你也可以检查这个cheat sheet的复杂符号
这不是Θ(n),也不是Θ(n ^ 2)。复杂性取决于许多不同的变量:正在制作的列表的大小,以及每行stdin上的空格数。外部for循环执行list-size次数;该循环的主体执行每行数的空格数。因此,对于[0,r]中的所有i,您的复杂度更像是Θ(r * k_i),其中k_i是第i个stdin的空格数。