【XDOJ2026秋数据结构】746.有序表的合并去重【Compash个人题解】
746.有序表的合并去重
问题描述
已知两个有序线性表L1和L2,每个线性表中数据元素的值为单调增的正整数(<100个),各线性表内部无重复元素。把L2中的元素合并到L1中,要求L1中数据元素的值仍为单调递增,且无重复元素。
问题输入
第一行输入两个正整数a,b,分别表示第一个线性表L1和第二个线性表L2的长度;第2行依次输入L1中单调增的a个正整数;第3行依次输入L2中单调增的b个正整数。正整数均小于10000。
问题输出
共有1行,最终合并并去重后的结果,每个数字之间有一个空格。
输入样例
//输入样例
6 7
1 2 5 6 10 13
1 3 5 8 19 22 31
输出样例
//输出样例
1 2 3 5 6 8 10 13 19 22 31
#include<iostream>
#include<vector>
std::vector<int> l1,l2,l3;
int main()
{
int a,b,input;
std::cin>>a>>b;
for(int i=0;i<a;i++)
{
std::cin>>input;
l1.push_back(input);
}
for(int i=0;i<b;i++)
{
std::cin>>input;
l2.push_back(input);
}
int p=0,q=0;
while(p<a&&q<b)
{
if(l1[p]<=l2[q])
{
l3.push_back(l1[p]);
p++;
}
else
{
l3.push_back(l2[q]);
q++;
}
}
while(p<a)
{
l3.push_back(l1[p]);
p++;
}
while(q<b)
{
l3.push_back(l2[q]);
q++;
}
int maxnum = std::max(l1[a-1],l2[b-1]);
int r = 0;
for(int i=1;i<=maxnum;i++)
{
if(l3[r]==i)
{
std::cout<<i<<' ';
while(l3[r] == i) r++;
}
}
return 0;
}

浙公网安备 33010602011771号