【发布时间】:2021-10-19 11:38:28
【问题描述】:
我有一个包含字符跨度的元组列表。但是在某些情况下,跨度重叠。 我的目标是修改元组列表,使得重叠时只保留较大的跨度值并删除较小的跨度
例子:
Original list: [(2, 3), (7, 9), (10, 11), (10, 12), (15, 17), (16, 17), (20, 21), (20, 29), (21, 28)]
Modified list: [(2, 3), (7, 9), (10, 12), (15, 17), (20, 29)]
这里 (10,11) , (16,17) , (20,21) , (21,28) 被删除,因为它们与 (10,12) , (15,17) 和 ( 20,29) 分别。
我找到了一些解决重叠问题的答案,例如 this,但这些答案不涉及更大的跨度问题。
我的想法是按降序对跨度差异的长度进行排序,然后以某种方式搜索重叠。这种对重叠的搜索是我无法弄清楚的
【问题讨论】:
-
一个小困惑,这里你说
(21,28)应该被删除以与(20,29)重叠,是我误解,还是错误? -
是的,(21,28) 位于 (20,29) 内部,因此应该删除
-
那么,您介意再解释一下,以便我提供帮助吗?我想我误解了你最初的问题
-
好的,所以基本上考虑一个数轴,其中你有一个从 20 到 29 的行,然后是从 21 到 28 的另一行。现在,21 > 20 和 28
-
啊,是的。现在确实有道理,让我想想代码,我会更新它