寻找一种有效的算法来获得一条线

时间:2018-12-10 02:08:23

标签: algorithm time-complexity big-o

给出n个水平线段,其中每个线段的范围为x2-x1,我应该应用哪种算法来获得使我获得最大的 combined 范围的直线(每次与线段的交点都添加该段的范围),就像找到一条要钻的线,以获得最大量的水(水代表X2-X1量的段) 我用令人沮丧的大O(n ^ 4)

完成了蛮力算法

1 个答案:

答案 0 :(得分:0)

我假设没有一个从另一个结尾开始的句段,如果不需要,则需要进行以下修改:

  • 为每个细分创建2个元组:(x1,索引)和(x2,索引)
  • 按其第一个值对元组进行排序
  • 设为最佳= 0
  • 迭代元组。如果它是起点(之前没有看到索引),则将其值(x2-x1)最佳地相加。如果是终点,则将其价值减至最佳。
  • 问题的答案将是最好的最高价值。

复杂度:O(n log n)