0%

扫描线(叠加区间问题)

[toc]

扫描线概念#

多个连续区间,计算叠加部分要去掉或者叠加某个价值,这种题常见于那种任务流

区间的坐标很大(一般是10^9)导致无法遍历坐标值, 但你可以遍历起点和终点坐标。

则可以将这些起点和终点作为纳入扫描点,逐个按从左到右的顺序扫描,并更新所谓的“高度"",每次做宽度 乘 高度的计算

步骤#

  1. 将终点和起点都放入数组排序, 并注意保留是起点还是终点的信息(有可能起点和终点相同,如果没保留这个标志可能导致出错)
  2. 从左到右扫描各点
  3. 扫描到某点时, 先不着急更新高度, 而是先计算"当前高度乘上(当前位置减去上一个位置)"。注意这个过程不需要区分是起点还是终点,都可以直接算。
  4. 计算完成后, 根据是起点还是终点,来更新所谓的高度
  5. 更新上一个位置

相关题目#

850. 矩形面积 II - 力扣(LeetCode)