【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;
} 
posted @ 2026-10-12 21:27  Compash  阅读(2)  评论(0)    收藏  举报