给出一个排序的非重叠连续间隔的集合,如何添加新间隔或从中删除现有间隔。请为我建议一个好的数据结构来存储这些间隔,以使这些更改成为可能。
示例:
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)
如果要删除,应尽可能将其添加到前一个,否则添加到下一个。
答案 0 :(得分:1)
我根本不会打扰离散间隔。
由于定义需要“排序的非重叠连续间隔”,因此我只存储间隔的边界(“ internal bool _ShowCheckBox = true;
internal bool ShowCheckBox
{
get
{
return _ShowCheckBox;
}
set
{
if (_ShowCheckBox != value)
{
_ShowCheckBox = value;
OnShowCheckBoxChanged();
}
}
}
”),然后从该列表中按需创建间隔范围(“ {{1 }}“)。
以下是我的示例(也许应该修改“ intervalBoundaries
”方法以涵盖极端情况):
getRanges()