离散化

今天准备依次把基础的算法整理下,虽然有的不算特别基础,不过在算法中都还算是基础的。计划把这些算法都整理下然后构建出自己的一个大体框架,至少以后遇见简单的算法裸题能够知道一个思考方向,不至于摸不着头脑。今天先把离散化整理下。

离散化

离散化就是将一堆离散分布的数据排列在一起,使其能够存储在数组中。

举个栗子吧,大致就是有一堆数据在-1e9—1e9直接,给其中某一些数加一个值,然后求一段区间和,这时是不能用前缀和做的,因为数组存不下,这时就可以只考虑用到的数,中间没用到的就忽略掉。

代码实现方式就是先把输入数据存下来,存储所有会用到的数据,然后排序,这时就将这一大数与一堆小的数对应起来了(就是对应的数组下标),想用某一个大数就二分查找这个数组,找到对应的那个小的数。

sort(alls.begin(), alls.end());
alls.erase(unique(alls.begin(), alls.end()), alls.end());

用的时候就二分查找alls的值即可。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容