我们如何生成唯一的非重复对,使得不重复(x,y)=(y,x)。
假设我们有一个列表[3,6,9]
。然后,答案是(3, 6) (3, 9) (6, 9)
如果列表是[3,6]
。然后回答是(3,6)
这可以使用2 for循环来完成,但我们希望最好在O(n)
中完成(使用最多一个循环)
有这样做的pythonic方法吗?
答案 0 :(得分:0)
Pythonic的方法是使用标准库生成器(https://docs.python.org/2.7/library/itertools.html#itertools.combinations):
from itertools import combinations
for comb in combinations([3,6,9], 2):
print(comb)
正如文档所说,组合的数量是n! / (2 * (n-2)!)
,我猜是O(n^2)
。所以它不能在O(n)时间内完成。