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 }
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;
作者:弦断
出处:http://www.cnblogs.com/ucas/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。