离散化
**离散化有一个很重要的前提:**只关心数据之间的相对大小关系,不用关心绝对大小。
离散化,把无限空间中有限的个体映射到有限的空间中去。离散化是在不改变数据相对大小的条件下,对离散的数据进行相应的范围缩小。
离散化过程,将一组实数转换为一组整数,使得原始数据的顺序和区间关系得以保留。将原始数据排序,然后为每个不同的值分配一个整数。这个整数是该值在排序后出现的位置,即离散化后的数值。
方法一
拷贝辅助的数组,然后排序。去重,可以保证相同的元素离散化后数字相同。二分把离散化后的数字放回原数组。
// 离散化 改变了原数组,偏序关系不变。
void discrete(int[] nums) {int n = nums.length