前言:遇到了一个矩形面积堆叠的问题,想了很久。终于找到了方法。先做个小记,待到具体问题时再分析。
数据离散化:
高大上的名字,其实就是对数据的一种处理,也可以采取数组 或者 容器(map、vector。。。)之类的来存储。之前的IBM技术俱乐部主席竞选 那道题其实就是很好的应用。
有些数据本身很大, 自身无法作为数组的下标保存对应的属性。
如果这时只是需要这堆数据的相对属性(例如大小关系), 那么可以对其进行离散化处理。
核心是:当数据只与它们之间的相对大小有关,而与具体是多少无关时,可以进行离散化。
使用方法:先排序,再删除重复元素,之后索引元素离散化后的值。
线段树:
线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。
对于线段树中的每一个非叶子节点[a,b]