题目:整型数组合并
将两个整型数组按照升序合并,并且过滤掉重复数组元素。
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
int m,n;
vector<int> va,vb,vc;
cin>>m;
for(int i=0;i<m;i++)
{
int number;
cin>>number;
va.push_back(number);
}
cin>>n;
for(int i=0;i<n;i++)
{
int number;
cin>>number;
vb.push_back(number);
}
sort(va.begin(),va.end());
vector<int>::iterator end1=unique(va.begin(),va.end());
sort(vb.begin(),vb.end());
vector<int>::iterator end2=unique(vb.begin(),vb.end());
merge(va.begin(),end1,vb.begin(),end2,back_inserter(vc));
for(vector<int>::iterator it=vc.begin();it!=vc.end();++it)
cout<<*it<<" ";
return 0;
}
方法二:
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int a[100],b[100],c[200],m,n;
cin>>m;
for(int i=0;i<m;i++)
cin>>a[i];
cin>>n;
for(int j=0;j<n;j++)
cin>>b[j];
sort(a,a+m);
sort(b,b+n);
for(int i=0;i<m;i++)
{
if(a[i]==a[i+1])
{
for(int j=i+1;j<m;j++)
{
a[j]=a[j+1];
}
m--;
--i;
}
}
for(int i=0;i<n;i++)
{
if(b[i]==b[i+1])
{
for(int j=i+1;j<m;j++)
{
b[j]=b[j+1];
}
n--;
--i;
}
}
int k=0,ip=0,iq=0;
while(ip<m&&iq<n)
{
if(a[ip]<b[iq])
{
c[k]=a[ip];
ip++;
k++;
}
if(a[ip]==b[iq])
{
c[k]=a[ip];
ip++;
iq++;
k++;
}
if(a[ip]>b[iq])
{
c[k]=b[iq];
iq++;
k++;
}
}
if(ip<m)
{
for(;ip<m;ip++)
c[k++]=a[ip];
}
if(iq<n)
{
for(;iq<n;iq++)
c[k++]=b[iq];
}
for(int i=0;i<k;i++)
cout<<c[i]<<" ";
}