Python算法:如何高效地判断两个整数集合是否相交?

3 投票
5 回答
517 浏览
提问于 2025-04-16 09:42

给定一个范围 [2004, 2008],最快的方法是什么来判断这个范围是否和其他范围有交集?

其实我在处理一个数据库的问题,表里有两列,一列是下限,另一列是上限。我的任务是找到所有和给定的这个范围(比如 [2004, 2008])有交集的行。

我在使用mongodb,这个功能是数据库本身支持的吗?也就是说,有没有现成的关键词可以用来实现这个功能?因为我的用户量很大,所以我希望这个任务能尽快完成。

补充一下,数据库表里包含以下几行:

20 30
10 50
60 90
...

给定输入范围 (25 40),我想返回那些表示范围的行,这些行和给定的范围有交集。

所以返回的结果是:(20 30),(10 50)

5 个回答

2

MongoDB不支持交集操作。你可以在Python中使用集合的intersection()方法来实现交集。

3

试试这个,假设 lowhigh 是你要设置的范围:

db.ranges.find({'low': {'$lt': self.high}, 'high': {'$gt': self.low}})

如果你希望你的查询包含边界值,可以把 $lte$gte 替换掉。

4

我对MongoDB一点都不了解,但你基本上是在寻找

从表中选择所有数据,条件是下限不大于2008或者上限不小于2004

撰写回答