线段算法-如何保证添加的线段不重叠

已知线段长为 0-50000

然后要陆续往这里数组总加入线段,但是不能重复,

比如 0-1729 1741-2139 都是已经存在的线段, 需要添加的部分为1729 -1741,

添加过程中可能会是 1729 - 1730 1730 - 1735 都有可能, 但是线段不能重叠,最终能够形成完整的线段.

    [0] => Array
        (
            [startdis] => 0
            [enddis] => 1729
        )

    [1] => Array
        (
            [startdis] => 1741
            [enddis] => 2139
        )

    [2] => Array
        (
            [startdis] => 2015
            [enddis] => 2301
        )

    [3] => Array
        (
            [startdis] => 7274
            [enddis] => 14124
        )

    [4] => Array
        (
            [startdis] => 23261
            [enddis] => 27978
        )


阅读 2.5k
2 个回答

题目的意思是已经有一个数组,包含了一些区间,而你要补足缺失的区间,使得最终首尾相接形成0-50000的区间?

如果上面我理解的没错的话,解答方法就是首先给数组元素排序,排序的依据就是子数组的startdis的值。然后再遍历数组,前一个元素的enddis到后一个元素的startdis就是要补足的区间(除非两者相等)。最前面的0开始的区间和最后的到50000结束的区间单独处理即可。

给一个 对象,每段线都有一个 id ,添加的时候,开始到结束期间每个点的值为该 id ,同时遍历 是否存在

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题