离散

约 36 个字 11 行代码

有n个不同的数,按照大小关系映射到1到n的整数,方便后续处理,这个过程叫离散化

vector<int> a;
a.push_back(5);
a.push_back(1);
a.push_back(5);
vector<int> b=a;
sort(b.begin(),b.end());
b.erase(unique(b.begin(),b.end()),b.end());
for(auto &u:a)
    u=lower_bound(b.begin(),b.end(),u)-b.begin()+1;
for(auto &u:a)
    cout<<u<<" ";