我遇到了需要在列表中添加项目的问题。它必须使用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
由于第二次尝试的元素在其自己的子列表中,因此它们不适用于我的程序的其余部分。有没有?
答案 0 :(得分:1)
您是否尝试过使用扩展而不是附加?
a.extend(sys.stdin.readline().strip().split(" "))
对此question
进行了解释您也可以检查此cheat sheet的复杂度标记
答案 1 :(得分:1)
这不在Θ(n)中,也不在Θ(n ^ 2)中。复杂度取决于许多不同的变量:列表的大小以及stdin每行上的空格数。外部for循环执行列表大小的次数;该循环的主体执行每行空间的次数。因此,对于[0,r]中的所有i,您的复杂度更像Θ(r * k_i),其中k_i是第i个标准输入的空格数。