gpt4 book ai didi

algorithm - 联合分段算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:13:38 24 4
gpt4 key购买 nike

我们有一个正确片段列表 [a;b] (a <= b)。
如果交叉,需要得到一个新的链表,链表是统一的。
例如:[1;3], [2;4], [7;8] => [1;4], [7;8 ].
我有一个想法:首先我们制作边界列表,对于我们知道的每个边界是左边界还是右边界,然后我们按边界值对其进行 ASC 排序,然后按左边界或 rith(左边界先行)排序。
这个想法是遍历这个列表并且:
1) 作为左边界,我们取第一个遇到的
2) 右边框将按如下方式确定:
我们有一个 counter = 0,当我们遇到左边界时,然后是++counter,当它是正确的时 --counter 并且当 counter == 0 时,我们将当前边界作为右边界。
以此类推,直到列表结束
你觉得这个算法怎么样?也许还有其他想法?

最佳答案

是的,你的想法大体上是正确的。更多算法说明:

为所有段末端制作一个成对的数组(a 或 b;aux = +1 for a,-1 for b)

按坐标排序数组
(在平局的情况下使用 aux 作为辅助键:如果接触的段不应合并,则将 -1 放在 +1 之前,反之亦然)

使 Count = 0

遍历数组,将aux添加到Count

每个时刻Count的值对应打开的段数

Count变为非零时,打开输出段
Count变为零时,关闭输出段

   (1, 5), (2,6)
array
(1; 1), (2; 1), (5;-1), (6;-1)
count
0 1 2 1 0
^ ^
start end

关于algorithm - 联合分段算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53797711/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com