7-52 两个有序链表序列的交集 (20 point(s))

传送门
输入样例1:

1 2 5 -1
2 4 5 8 10 -1

输出样例1:

2 5

输入样例2:

1 2 2 3 3 4 -1
0 2 2 3 5 6 -1

输出样例2:

2 2 3

注意
①数据范围,1e7级别,数据范围小了最后一个节点wa
②判断交集是否为空,为空输出NULL;
③会出现一个数字重复输出的情况
——————————————
桶排思想

#include<iostream>
using namespace std;
const int N=1e7+10;
int seq1[N],seq2[N];
int main()
{
    
    
	int t,cnt=0,sum=0;
	while(cin>>t&&t!=-1)
		 seq1[t]++;
	while(cin>>t&&t!=-1)
		 seq2[t]++;
	for(int i=0;i<N;i++)
		if(seq1[i]&&seq2[i])sum++;
	if(!sum)
		printf("NULL");
	else for(int i=0;i<N;i++)
		while(seq1[i]&&seq2[i])
			seq1[i]--,seq2[i]--,printf(!cnt++?"%d":" %d",i);
}

猜你喜欢

转载自blog.csdn.net/weixin_49640089/article/details/114701451