扫描线

扫描线一般应用在图形上面,就是一条线在整个图形上扫来扫去,一般内用来解决图形面积,周长等问题。
以 数飞机 为例,深入理解扫描线的核心:只关注起止时间点,而不用暴力的关注每一个时刻。
将每个区间切成起点和终点,然后操作

数最多重复区间个数

类型描述
将开始时间和结束时间放到同一个数组中, 标识出是开始还是结束, 然后对数组排序。排序须要按照时间顺序先后排列,如果同时有开始和结束,将结束放在开始前,排序好之后,遍历数组。
经典题型
⛏️
920 · 会议室 - LintCode
等同🔒Leetcode 252 会议室
⛸️
919 · 会议室 II - LintCode
等同🔒Leetcode 253会议室Ⅱ

重复区间的合并插入删除与构建

返回重复区间

给两个区间数组,返回两个数组中 所有区间的重复时间段,采用双指针思路。或者返回非重复时间段,利用数飞机的策略

不相交的个数

无分类

需要借助一些别的数据结构来实现例如 TreeMap,TreeSet 优先队列。
在python中,此三种数据结构有 sortedcontainers 库中的 SortedDict, SortedSet, SortedList 来实现

速通

🚞
扫描线
,一种简单灵活的算法,经典题目打气球以及多种区间题目。

记录

2021年11月18日
判断覆盖区间的,可以按照头升序,尾降序的排,这样排完之和才可能的前面的覆盖后面的,不然不好判断。
LeetCode:435, LintCode: 850