这与我正在处理的一个更大的问题有关。
例如,假设我们有一个列表
9 5 6 1
可能的三角形的边长
(9,5,6)
(9,6,1)
(9,5,1)
(5,6,1)
和有效的(由三角不等式)是
(9,5,6)
(5,6,1)
是否可以在优于 - O(n choose 3)
时间内找到那些有效的?
答案 0 :(得分:11)
一般情况下,答案是否:想象一下你
1, 1 - ε, 1 - 2 * ε, ..., 1 - (n - 1) * ε
在这种情况下,所有3个项目的组合
n * (n - 1) * (n - 2) / 6 = O(n**3)
是不同的并使有效的三角形,并且枚举(和输出的复杂性O(n**3)
em>)他们
答案 1 :(得分:3)
首先对您的清单进行排序。
现在我们不需要完成O(n ^ 3)搜索,而只需要在O(n ^ 2)中搜索一对点并找到第三个点(可能多于一个点,所以你需要检查通过二分搜索来获得下限和上限。
总的来说,新的复杂性是O(n ^ 2 log(n))
答案 2 :(得分:1)
没有。你可以拥有一组任意大的输入,其中每个三元组都是一个有效的三角形。