我需要一个数据结构,可以在单维内存储非重叠范围。维度的整个范围不需要完全覆盖。单维内非重叠范围的数据结构
一个例子是会议室调度程序。维度是时间。没有两个时间表可能会重叠。会议室并不总是安排。换句话说,在给定的时间内最多只能有一个时间表。
快速解决方案是存储开始和结束时间的范围。
Range {
Date start
Date end
}
这是非标准化的,并要求容器强制执行不重叠。对于两个相邻的范围,前一个'结束与下一个开始将是多余的。
另一种方案可能涉及存储每个范围的一个边界值。但是对于连续的范围序列,总是会有比范围更多的边界值。为了解决这个序列可以表示为交替的边界值和范围:
B =边界值,R =范围
BrBrB
该数据结构可能看起来像:
Boundary {
Date value
Range prev
Range next
}
Range {
Boundary start
Boundary end
}
从本质上讲,它是一个双向链表,具有交替类型。
最终,我使用的任何数据结构都将在内存(应用程序代码)和关系数据库中表示。
我很好奇什么学术或行业尝试解决方案存在。