离散化思想

假设在一段数轴上,存在n个有用的数字,其余数字是0,这n个数字是非常稀疏的,两两之间间隔很远。那么对这n个有用的数字求区间和,需要开辟的前缀和数组将非常大,可能达到10^9。所以我们需要将这n个有用的数字紧凑起来,将原来的位置和紧凑之后的位置形成映射,这种方式就叫做离散化。

例如:

0 0 0 0 2 0 0 5 0 0 0 7 0 0 0 ... 有用的数字:2 5 7,下标分别是4 7 11。将他们离散化:

2 5 7... 下标分别是0 1 2,这里4 7 11 和 0 1 2 形成了映射,将稀疏的数列变得紧凑。

0 0 0 0 2 0 0 5 0 0 0 7 0 0 0 ...
        4     7       11

| | |

2 5 7
0 1 2

那么在操作原数组的2时,直接通过映射(4 -> 0)找到紧凑数组中2的位置,再进行操作即可。

posted @ 2021-11-19 18:06  moon_orange  阅读(1)  评论(0编辑  收藏  举报