Mark

删除重复元素

1、简单的数组进行去重

 1 //采用覆盖的方法,去掉重复元素  
 2 int removeDuplicate(int a[],int length)
 3 { 
 4     int i = 0,j=0,location=0,count=0;
 5     while (i < length)
 6     {
 7         j = 0;
 8         while ((i + j + 1)<length && a[i] == a[i + j + 1] ) //如果相同则,往后迁移计数
 9         {
10             ++j;
11         }
12         count += j;
13         if ((i + j + 1)<length)     //边界处理
14         a[++location] = a[i + j + 1];  //location标志当前该插入的位置
15         i = i + j + 1;
16     }
17     return count; //返回重复元素的个数
18 }
View Code

2、模板库去重

    vector<int> vec(5, 6);//初始化5个值为6的vector数组
    vector<int>::iterator iter;
    srand((unsigned)time(NULL));//产生当前时间开始的随机种子
    for (int i = 0; i < 10; ++i)
    {
        vec.push_back(rand()%16);
    }
    sort(vec.begin(),vec.end()); 
    vector<int>::iterator it=unique(vec.begin(), vec.end());//指向超出无重复元素范围末端的下一位置
    vec.erase(it, vec.end());
    for (iter = vec.begin(); iter != vec.end(); ++iter)
    {
        cout << *iter << " ";
    }
    cout << endl;
View Code

 

posted @ 2016-04-10 09:24  弦断  阅读(193)  评论(0编辑  收藏  举报