排序序列中的三角形数量
Posted
技术标签:
【中文标题】排序序列中的三角形数量【英文标题】: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
【问题讨论】:
你的实际算法是什么?能给我们举个例子吗? 我在帖子中添加了我的伪代码。 【参考方案1】:-
您可以排除第三个循环并使用二进制搜索查找最大 k 值。复杂度为 O(N^2*Log(N)
您可以达到更好的时间 - O(N^2) - 想想如何使用单调性属性。
【讨论】:
以上是关于排序序列中的三角形数量的主要内容,如果未能解决你的问题,请参考以下文章