排序序列中的三角形数

时间:2015-10-29 18:22:02

标签: algorithm triangle-count

鉴于n正整数A(1) < A(2) < ... < A(n)的序列严格增加。我们需要找到边长为3这个序列的不同元素的三角形数。

n <= 6000开始,检查每个可能的组合都不够快。有没有更好的算法?谢谢你的帮助。

我的伪代码:

for i from 0 till n - 2
    for j from i+1 till n-1
        for k from j+1 till n
            if A[i] + A[j] > A[k] then count += 1
            else break

1 个答案:

答案 0 :(得分:0)

  1. 您可以排除第三个周期并使用二分搜索查找最大k值。复杂度为O(N ^ 2 * Log(N)
  2. 你可以达到更好的时间 - O(N ^ 2) - 想想如何使用单调性属性。