【问题标题】:Number of triangles from a sorted sequence排序序列中的三角形数量
【发布时间】:2015-10-29 18:22:01
【问题描述】:

给定一个严格递增的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

【问题讨论】:

  • 你的实际算法是什么?能给我们举个例子吗?
  • 我在帖子中添加了我的伪代码。

标签: algorithm triangle-count


【解决方案1】:
  1. 您可以排除第三个循环并使用二进制搜索查找最大 k 值。复杂度为 O(N^2*Log(N)
  2. 您可以达到更好的时间 - O(N^2) - 想想如何使用单调性属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-18
    • 2021-06-26
    • 2019-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-24
    相关资源
    最近更新 更多