#include <iostream> using namespace std; int main() { int n; cin>>n; int a[n+1];//放置索引越界,数组大一些 int tmp[n+1];// 定义一个和a相同大小的数组,存放去重后的数 for(int i=0;i<n;++i) cin>>a[i];//依次输入数组a int m = 0; // 记录当前tmp到底存了多少个元素 for (int k = 0; k < n; ++k) { int j = 0;//放外面的作用是下面if要用 for (; j < m; j++)//可以省略j=0 { if (a[k] == tmp[j])//拿a[i]依次与tmp里的元素对比 break; // 找到相同的了就break } if (j == m)//这个意思是数组b内的数据与当前位置的a数组里面的数据不一样 { // 没有找到一个相同的,把a中此元素放入tmp里 tmp[m] = a[k]; m++; } } for (int ii = 0; ii < m; ii++) { cout << tmp[ii] << " ";//输出 } return 0; }
数组去重,temp数组负责保存去重后的数据,外循环k用来移动未去重前的a[]数组下标,内循环j用来遍历temp数组,与a数组进行对比。j的限制就是temp当前有的元素。break是跳过当前的j循环,如果没有相同的就把a元素放入temp中
还有一种
#include<iostream> #include <algorithm>//算法头文件,sort包含在内 using namespace std; int main() { int n; cin>>n; int a[n+1]; for(int i=0;i<n;++i) cin>>a[i]; sort( a, a + n); // 排序 int m=unique(a, a +n) - a;//去重复 for (int i = 0; i < m; i++) cout << a[i] << " ";//输出 return 0; }
利用C++自带的排序和取重函数sort和unique,#include <algorithm>//算法头文件
unique是STL中的函数,需要#include<algorithm>
unique的作用是“去掉”容器中相邻元素的重复元素,它会把重复的元素添加到容器末尾,而返回值是去重之后的尾地址
int num[10]={1,1,2,2,2,3,4,5,5,5}; int ans=unique(num,num+10)-num;
这时,返回的ans是5,而num中前5项就是1,2,3,4,5,一般使用前需要对容器进行排序。