整数的保序离散化
算法思想:
- 数少但是值域大,需要映射,就叫离散化
- 离散化与哈希:离散化是一种极其特殊的哈希,离散化需要保序,哈希是指一般意义的哈希
代码实现:
vector<int> alls;//存储所有待离散化的数据
sort(alls.begin(),alls.end());//将所有值排序
alls.erase(unique(alls.begin(),alls.end()),alls.end());//去掉重复元素
//二分求出x对应的离散化的值
int find(x)
{
int l = 0,r = alls.size()-1;
while(l<r)
{
int mid = l+r>>1;
if(alls[mid]>=x) r=mid;
else l=mid+1;
}
return l;//映射到0,1,2,3,...
//return l+1; 映射到1,2,3,...
}