数组元素去重
作者:
巷港
,
2022-03-09 09:34:02
,
所有人可见
,
阅读 182
注意:1、unique函数返回的是最后一个不重复数字的下一个位置
2、unique一般先对数组进行排序
3、unique实现的是把不重读的元素向前移动,重复的元素自然而然到了数组后端,但没有实现对重复元素的删除
4、unique之后的数组长度并没发生变化,要想实现真正的删除重复元素,需要搭配erase()函数
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
const int N = 1010;
int a[N];
int n;
int main()
{
cin>>n;
for (int i=0;i<n;i++) cin>>a[i];
sort(a,a+n);
int ans=n;
for (int i=0;i<n-1;i++)
{
if (a[i]==a[i+1])
{
ans--;
continue;
}
}
cout<<ans<<endl;
}
直接用unique
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
const int N = 1010;
int a[N];
int n;
int main()
{
cin>>n;
for (int i=0;i<n;i++) cin>>a[i];
sort(a,a+n);
int ans=unique(a,a+n)-a; //uinque返回的是最后一个不重复数字的下一个位置
cout<<ans<<endl;
return 0;
}