离散化
离散化
离散化其实很简单,就是将我们很大范围的数字映射到一个相对于说较小的范围。其中分为不注重大小关系的离散化和注重元素大小位置的离散化。前面的很简单我们可以直接用拉链法来进行离散化就好。但是对于后者,我们需要先进行一个排序,排序之后还要去重,最后根据排序的下标进行离散化。这样相对麻烦。
于是,就有了一个较简单的离散化方法,我先掏出结论!
1 | //离散化a数组 |
这个算法首先用p数组记录下a数组对应的每个下标(其实就是记录一下a原数组每个数字的位置),接着对p进行排序,排序依据是p数组对应的a数组里面的数字,其实这一步的意义就是计算出a数组排序后原来每个下标的位置在哪里。然后从小到大,也就是p[1] - p[n](这里面存的是对应a数组原来位置)1-n的赋值。但是需要注意这个离散化之前需要数组去重!
此文章版权归waar299所有,如有转载,请注明来自原作者!
评论