离散化:把无限空间中有限的个体映射到有限的空间中去,以此提高算法的时间和空间效率。
即:先把大数据排序,然后对应排序前的顺序,并把排序后数据的下标记录到排序前数据相对应的位置
(百度解释:离散化是在不改变数据相对大小的条件下,对数据进行相应的缩小)
思路:排序->删除重复元素->索引数据离散化后对应得值
STL 中 unique函数的功能是元素去重。就是将重复的元素保留一个在前面,其余的移动到最后。由于”删除”的是相邻的重复元素,所以在使用unique函数之前,一般都会将目标序列进行排序。
#include<iostream> #include<algorithm> #include<cassert> using namespace std; static bool myfunc(int i, int j) { return (i + 1) == j; //return i == j; } int main() { vector<int> a = {1,3,3,4,5,6,6,7};//省略排序步骤 vector<int>::iterator it_1 = a.begin(); vector<int>::iterator it_2 = a.end(); cout<<"去重前的 a : "; for(int i = 0 ; i < a.size(); i++) cout<<a[i]; cout<<endl; //unique(it_1,it_2,cmp);cmp 可以省略 //cmp 表示的是自定义元素是否相等。也就是说通过自定义两个元素相等的规则,来对容器中元素进行去重 unique(it_1,it_2); cout<<"去重后的 a : "; for(int i = 0 ; i < a.size(); i++) cout<<a[i]; cout<<endl; }
vector<int>::iterator nowend; nowend= unique(it_1,it_2); a.erase(nowend,it_2); for(int i = 0 ; i < a.size(); i++) cout<<a[i]; //1 3 4 5 6 7
PS:建议复制下来跑一遍 //13345667 //13456767
来源:博客园
作者:就很甜呀
链接:https://www.cnblogs.com/Shallow-dream/p/11443813.html