在一个范围内求和的数组中查找三胞胎

时间:2012-11-04 05:53:46

标签: c++ arrays algorithm

  

可能重复:
  Number of tuples

给定N个数a[1..N]和其他2个整数L和H,我们必须计算(i,j,k)个元组的数量L <= a[i] + a[j] + a[k] <= H。 这可以比O(n^3)更好吗? 有什么建议/算法吗?

1 个答案:

答案 0 :(得分:0)

首先将[i]排序为增加订单。

枚举a [i]和[j],这样你就可以用binary search来找出[k]满足L - (a [i] + a [j])&lt; = a [ k]&lt; = H - (a [i] + a [j])。

整个算法费用O(n^2*log(n))