离散化

匿名 (未验证) 提交于 2019-12-02 23:57:01

离散化:把无限空间中有限的个体映射到有限的空间中去,以此提高算法的时间和空间效率。

    即:先把大数据排序,然后对应排序前的顺序,并把排序后数据的下标记录到排序前数据相对应的位置

    (百度解释:离散化是在不改变数据相对大小的条件下,对数据进行相应的缩小)

    

 

 


 

 

思路:排序->删除重复元素->索引数据离散化后对应得值

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
 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!