因为intervaltree库不自动合并重叠或相邻区间,需维护有序互斥区间列表,插入时通过overlaps_or_adjacent函数(用+1判定相邻)检测并合并。

为什么不用现成的 intervaltree 而要自己实现?
因为 intervaltree 库默认不自动合并重叠或相邻区间——插入 [1, 3] 和 [4, 6] 后,它仍保留两个独立节点;而“自动合并相邻区间”意味着 [1, 3] 和 [4, 6](即右端点+1 == 左端点)应被合并为 [1, 6]。这需要在 insert 或 add 时主动触发合并逻辑,标准库和多数第三方包不提供该行为。
核心操作:插入时如何检测并合并相邻/重叠区间?
关键不是建一棵传统意义上的平衡区间树,而是维护一个有序、互斥、已合并的区间列表(如 list[tuple[int, int]]),每次插入新区间前先做三件事:
让 macOS 自动化像说话一样简单 —— 用代码控制你的 Mac,无需学习 AppleScript 系统要求 macOS 14+ (Sonoma) Python 3.9+ 需要开启:辅助功能 + 屏幕录制权限
- 找出所有与新区间
[left, right]重叠或相邻的现有区间(即满足existing_right >= left - 1且existing_left ) - 用这些区间和新区间一起计算并集:最小左端点、最大右端点
- 从原列表中删除被覆盖的区间,插入合并后的新区间
示例逻辑片段:
list
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!










