我有一个单词列表,如:
List={"word1", "word2", "word3", ....}
如何生成“双字长”列表 所有这些单词的独特组合?
例如,如果上面的列表只包含三个 然后输出可能就像:
word1 word2
word1 word3
word2 word1
word2 word4
word3 word1
word3 word2
另外,请注意"word1 word2"
不是
与"word2 word1"
相同。
我知道这样一个最简单的解决方案:
for i=1 to N
for j=1 to N
if(i!=j) then
print List[i]+" "+List[j]
但这有O(n 2 )的复杂性。那是什么呢 具有最差情况的最佳算法 实现同样的复杂性。
答案 0 :(得分:8)
算法的输出包含O(n^2)
个元素。由于需要注意每个输出元素,因此您不能希望实现比O(n^2)
时间复杂度更好的效果。