我在数据库中有一张表,用于存储可以租借几天的物品
。
现在每当有人租赁一个物品
时,他们会指定一个起始日期
和一个结束日期
(基本上是他们想要租借该物品
的日期范围
)。
我想知道,在时间复杂度方面,检查输入的日期范围
是否与数据库中已有的日期范围
重叠的有效算法是什么。
说明:
|<------existing 1------->|
|<------existing 2------->|
|<------ input date range ---->| (which clearly, overlaps)
注意:
这个问题不是这个问题的重复。那一个检查两个日期范围是否重叠。我的问题是关于一个输入日期范围与多个现有日期范围重叠的。
另一个说明:
如果您对这个问题的标签感到困惑,我可以接受两种类型的答案,与语言无关
和特定语言
。
对于那些想给出特定语言
答案的人,以下是更多细节:
我有一个在python 3.4
上运行,带有PostgreSQL
数据库的Django 1.9
项目。我的模型是:
class Item(models.Model):
name = models.CharField(max_length=100)
class BookingPeriod(models.Model):
item = models.ForeignKey(Item)
start_date = models.DateField()
end_date = models.DateField()
O(log n)
性能... - shapiro yaacov