萌新总结的C++数组去重的两个方法
方法一:利用sort函数
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int n;
cin>>n;
int a[n];
for(int i=0;i<n;i++)
{
cin>>a[i];
}
sort(a,a+n); //将数组从小到大排序
int m=unique(a,a+n)-a; //unique函数只能去除相邻重复的元素
for(int i=0;i<m;i++)
{
cout<<a[i]<<" ";
}
return 0;
}
/* unique等同于
for(int i=1;i<n;i++)
{
if(a[i]!=a[i-1]) cout<<a[i]<<" ";
}
*/
这个方法的弊端是不能按照原来的顺序输出,即如果输入的是1 3 2 3 1,那么输出的是1 2 3.
方法二:利用数组循环判断
#include <iostream>
using namespace std;
int main()
{
int n;
cin>>n;
int a[n];
for(int i=0;i<n;i++)
{
cin>>a[i];
}
cout<<a[0]<<" "; //a[0]前面不可能有相同的
for(int i=1;i<n;i++)
{
int j=i-1,c=1;
for(;j>=0;j--)
{
if(a[i]==a[j]) {c=0;break;}
}
if(c==1) {cout<<a[i]<<" ";} //输出与前面数字不同的数字
}
return 0;
}
这个方法就可以按照原来的顺序输出了。