【题目来自灰灰考研】
2018华科软院
打印出非递减数组a与b的升序并集(去除重复元素)。
不少同学考试的时候没有认真看题,写成了交集。
#include<iostream>
#include<cstdlib>
#include<cstring>
#define MAX 0x3f3f3f3f
using namespace std;
void deleteArraySameElement(int A[], int n, int B[], int m, int C[], int &s)
{
int h1, h2, pre, index;
pre = MAX;
h1 = 0;
h2 = 0;
index = 0;
while(h1 < n && h2 < m)
{
if(A[h1] < B[h2])
{
if(A[h1] != pre)
{
pre = A[h1++];
C[index++] = pre;
}
else
{
h1++;
}
}
else if(A[h1] == B[h2])
{
if(A[h1] != pre)
{
pre = A[h1++];
C[index++] = pre;
h2++;
}
else
{
h1++;
h2++;
}
}
else
{
if(B[h2] != pre)
{
pre = B[h2++];
C[index++] = pre;
}
else
{
h2++;
}
}
}
while(h1 < n)
{
if(A[h1] != pre)
{
pre = A[h1++];
C[index++] = pre;
}
else
h1++;
}
while(h2 < m)
{
if(B[h2] != pre)
{
pre = B[h2++];
C[index++] = pre;
}
else
h2++;
}
s = index;
}
int main()
{
int data1[] = {1,2,4,7,8,9,10};
int data2[] = {2,3,4,5,11};
int result[100], s;
deleteArraySameElement(data1, 7, data2, 5, result, s);
for(int i = 0; i < s; i++)
{
cout<<result[i]<<" ";
}
cout<<endl;
}