插入或删除到不重叠的连续间隔集合中

时间:2019-03-29 09:58:55

标签: java algorithm performance intervals

给出一个排序的非重叠连续间隔的集合,如何添加新间隔或从中删除现有间隔。请为我建议一个好的数据结构来存储这些间隔,以使这些更改成为可能。

示例:

Given collection: [1,4), [4,9), [9,12)

Insert: [5,8)
Result: [1,4), [4,5), [5, 8), [8, 9), [9, 12)

Delete: [4, 5)
Result: [1,5),  [5, 8), [8, 9), [9, 12)

如果要删除,应尽可能将其添加到前一个,否则添加到下一个。

1 个答案:

答案 0 :(得分:1)

我根本不会打扰离散间隔。 由于定义需要“排序的非重叠连续间隔”,因此我只存储间隔的边界(“ internal bool _ShowCheckBox = true; internal bool ShowCheckBox { get { return _ShowCheckBox; } set { if (_ShowCheckBox != value) { _ShowCheckBox = value; OnShowCheckBoxChanged(); } } } ”),然后从该列表中按需创建间隔范围(“ {{1 }}“)。

以下是我的示例(也许应该修改“ intervalBoundaries”方法以涵盖极端情况):

getRanges()