C++实用技巧——离散化( 三 )
for(int i=1;i<=n;i++)
cin>>a[i
t[i
=a[i
;
sort(t+1t+n+1);
m=unique(t+1t+n+1)-t-1;
for(int i=1;i<=n;i++)
a[i
=lower_bound(t+1t+m+1a[i
)-t;
在这段代码中 , a[
经过离散 , 范围就变成了m 。 解释一下 , unique是c++自带的一个函数 , 表示对一个数列去重 , 然后返回不重复的元素个数 , 当然在后面要减去首地址 。 那么这种离散化对于有重复元素的数列也可以适用 , 但复杂度相对后面要讲的第二种方法会高些 。
比如 , 这组数据:
123424242654662420
进入这段代码后 , 首先会排个序得到:
012422422342465466
推荐阅读
- 烟雾弹|和平精英:八大烟雾弹超强实用技巧,KS阿神教你轻松上分
- 卡牌|皇室战争:掌握以下4条实用技巧,上分会更加轻松,很多人都在用
- 我的世界|我的世界:雷霆之杖、船卡透视、床链漏洞,基岩mc的11个实用技巧
- 野猪|皇室战争:野猪骑士还可以解骷髅海?分享5个对战实用技巧
- 超实用!三个隐藏的iOS 13实用技巧分享
- 特斯拉嫌弃 Python,追捧 C++
- 编程学习之亲密数(C++描述)
- 本科学完C语言、C++、python(学透点),还有必要学别的语言吗?
- 提升玩机体验!华为手机超实用技巧分享
- C/C++编程笔记:游戏开发中的噪声算法详解,游戏编程常用技术