PTA-两个有序链表序列的交集

该博客介绍如何找到两个非降序链表序列的交集,提供了输入输出格式,并提到了代码实现。

已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的交集新链表S3。

输入格式:

输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用1表示序列的结尾(1不属于这个序列)。数字用空格间隔。

输出格式:

在一行中输出两个输入序列的交集序列,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL

代码:

/*
   @两个有序链表序列的交集
*/
#include<cstdio>
#include<cstdlib>
#include<iostream>
#define OK          1
#define OVERFLOW   -2
using namespace std;
typedef int  Status;
typedef int  ElemType;//假设
在Python中,如果想要找到两个已排序的链表(通常称为升序链表)的交集,可以采用哈希集合(set)的方法来解决。这是一种常见的算法,步骤如下: 1. 创建一个空的哈希集合(set)用于存储第一个链表的所有元素。 2. 遍历第一个链表,将每个节点的值添加到哈希集合中。 3. 初始化两个指针,分别指向两个链表的头部。 4. 比较当前节点的值,如果都在集合中,则找到了交集,并将其添加到结果列表中;同时移动两个链表的指针。 5. 当遍历完一个链表后,继续检查另一个链表的剩余部分,直到找到所有交集节点。 以下是具体的Python代码实现: ```python def find_intersection(headA, headB): setA = set() # 将链表A的所有元素添加到集合中 while headA is not None: setA.add(headA.val) headA = headA.next # 使用双指针法查找交集 pointerA = headA pointerB = headB intersection = [] while pointerA is not None and pointerB is not None: if pointerA.val in setA and pointerB.val in setA: intersection.append(pointerA.val) pointerA = pointerA.next pointerB = pointerB.next elif pointerA.val < pointerB.val: pointerA = pointerA.next else: pointerB = pointerB.next return intersection # 示例链表节点定义 class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next # 创建示例链表 # ... (这里省略创建链表的代码) headA = ... # 链表A的头结点 headB = ... # 链表B的头结点 intersection_nodes = find_intersection(headA, headB) ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值