离散化:离散化,就是在不改变数据相对大小的条件下,对数据进行相应的缩小,以节省空间上的浪费。
代码:
#include <bits/stdc++.h>
using namespace std;
int a[1000005],b[1000005];
void work()
{
int n;
scanf("%d",&n);
int len=0;
for (int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
b[++len]=a[i];
}
sort(b+1,b+len+1);
len=unique(b+1,b+len+1)-(b+1); //去重
for (int i=1;i<=n;i++)
{
a[i]=lower_bound(b+1,b+len+1,a[i])-b; //离散化
}
for (int i=1;i<n;i++) printf("%d ",a[i]);
printf("%d",a[n]);
}
int main()
{
work();
return 0;
}
参考:https://blog.csdn.net/qq_43081996/article/details/104867536