有序整数离散化

离散化是指把无限空间中的有限的个体映射到有限的空间中取,以此提高算法的时空效率。

如:1,999,10000000, 15

处理后:1,3,4,2

排序

离散化就是要找出原数据在序列中排第几,因此我们直接先对原数据进行排序:sort(a.begin(),a.end());

去重

但是我们时常再排完序后发现有相同的元素,这样同一数据就会有不同的离散化结果,因此我们还要进行去重操作,我们主要用这个方法:a.erase(unique(a.begin(),a.end()),a.end());

其中unique(a.begin(),a.end());是将重复的元素移到后面并返回一个位置,而erase则是将这个位置到end的元素清除掉。为左闭右开区间。

离散化

在完成前面两个步骤后,我们要确定一个元素离散化后的结果,例如数据为:2 3 3 5 1,则处理后为:1 2 3 5,我们想知道5的离散化结果,则可以利用二分的方法。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值