我需要一個數據結構,可以在單維內存儲非重疊範圍。維度的整個範圍不需要完全覆蓋。單維內非重疊範圍的數據結構
一個例子是會議室調度程序。維度是時間。沒有兩個時間表可能會重疊。會議室並不總是安排。換句話說,在給定的時間內最多隻能有一個時間表。
快速解決方案是存儲開始和結束時間的範圍。
Range {
Date start
Date end
}
這是非標準化的,並要求容器強制執行不重疊。對於兩個相鄰的範圍,前一個'結束與下一個開始將是多餘的。
另一種方案可能涉及存儲每個範圍的一個邊界值。但是對於連續的範圍序列,總是會有比範圍更多的邊界值。爲了解決這個序列可以表示爲交替的邊界值和範圍:
B =邊界值,R =範圍
BrBrB
該數據結構可能看起來像:
Boundary {
Date value
Range prev
Range next
}
Range {
Boundary start
Boundary end
}
從本質上講,它是一個雙向鏈表,具有交替類型。
最終,我使用的任何數據結構都將在內存(應用程序代碼)和關係數據庫中表示。
我很好奇什麼學術或行業嘗試解決方案存在。