对于数组去重问题,可以分为两大方法:
一为不排序的去重
二为排序后的去重
而
排序后的去重又可以分为
1.利用函数unique实现将重复元素移至后面,cout出前面的元素,以达效果
2.不适用函数,思想:当后面与前面元素不同时,才去cout
tip:不要总想着去用一个新的数组去接收,完全可以在这个已经有的数组中根据某些特定的条件,来cout出想要的值
几个的代码:
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int M = 0;
int N = 0;
int i = 0;
int a = 0;
cin >> M >> N;
int arr1[100];
int arr2[100];
int arr3[200];
for (i = 0; i < M; i++)
{
cin >> arr1[i];
}
for (i = 0; i < N; i++)
{
cin >> arr2[i];
}
for (i = 0;i < M ; i++)
{
arr3[i] = arr1[i];
}
for (i = 0; i < N; i++)
{
arr3[M+i] = arr2[i];
}
for (i = 0; i < (M + N); i++)
{
sort(arr3, arr3 + M + N);
}
a = unique(arr3, arr3 + M + N) - arr3;
for (i = 0; i < a-1; i++)
{
cout << arr3[i] << ' ';
}
cout << arr3[a-1];
return 0;
}
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int M = 0;
int N = 0;
int i = 0;
int a = 0;
cin >> M >> N;
int arr1[100];
int arr2[100];
int arr3[200];
for (i = 0; i < M; i++)
{
cin >> arr1[i];
}
for (i = 0; i < N; i++)
{
cin >> arr2[i];
}
for (i = 0; i < M; i++)
{
arr3[i] = arr1[i];
}
for (i = 0; i < N; i++)
{
arr3[M + i] = arr2[i];
}
for (i = 0; i < (M + N); i++)
{
sort(arr3, arr3 + M + N);
}
cout << arr3[0];
for (i = 1; i < (M + N); i++)
{
if (arr3[i] != arr3[i - 1])
{
cout << ' ' << arr3[i];
}
}
return 0;
}
过了n多天的补充方法:(以空间换时间)
题目描述:
基本思路:遍历两次数组,打印下标
遵循C99时: