某个长度为n的有重复元素的数组如何转化为集合(即没有重复元素)
方法一:
遍历数组法:
代码说话:
#include<iostream>
using namespace std;
int b[1000];//定义一个全局数组来储存每个数字的出现次数,该数组各元素的初始值为0
int set(int a[], int n) {
int sum=0;
printf("修改后的数组为:\n");
for (int i = 0; i < n; i++) {
b[a[i]]++;//以数组元素值为下标,可以统计数组中每个元素的出现个数
if (b[a[i]] == 1) {//该值为一表示a[i]目前只出现一次,记录下来,第二次出现就不会记录
sum++;
cout << a[i] << " ";
}
}
cout << endl;
return sum;
}
int main() {
printf("请输入原数组大小:\n");
int n;cin>>n;
int a[1000];
printf("请输入数组(各元素以空格分隔)\n");
for(int i=0;i<n;i++){
cin>>a[i];
}
int sum = set(a, n);
printf("新数组个数为:\n");
cout << sum;
return 0;
}
方法二:
set法:
set用法见:set用法<-" data-link-title="->set用法<-">->set用法<--">
#include<stdio.h>
#include<iostream>
#include<set>
using namespace std;
int main() {
set<int> st;
printf("输入原数组个数\n");
int n; cin >> n;
int a;
printf("输入原数组(空格分隔):\n");
for (int i = 0; i < n; i++) {
cin >> a;
st.insert(a);
}
printf("新数组:\n");
for (set<int>::iterator it = st.begin(); it != st.end(); it++) {
printf("%d ", *it);
}
printf("\n");
printf("新数组大小:\n");
printf("%d", size(st));
return 0;
}
感谢阅读!!!