离散化
离散化
离散化
1、对于元素个数不多、值域很大的有序无重复数列,且更关注数列的相对大小(而不是绝对大小),可以使用离散化的方式优化程序。离散化本质上是一种哈希,即把一个数字映射为另一个数字
2、例如对于一个长 100 的有序无重复数列{1, 5, 20, ..., 10^18}
(元素最大值为 1018),只判断相对大小关系,可将其映射为{0, 1, 2, ..., 99}
,便可以代表所需要的相对大小信息
3、离散化通常可以将大数组的零散数据映射到小数组中。例如存储一条 109 的数轴上的点的值,但却只有较少数据量的一些零散数据,如{[0]:3, [4]:7, [11]:4, [10000]:21}
,如果开辟 109 的数组不仅会爆栈还浪费大量空间。如果使用时只关注下标的相对大小,最好的办法是将有数据的点按照下标离散化为{[0]:3, [1]:7, [2]:4, [3]:21}
,这样便存储到了小数组中