两个有序链表序列的交集
时间: 2024-01-07 10:05:58 浏览: 103
两个有序链表序列的交集可以通过遍历两个链表来实现。我们可以使用两个指针分别指向两个链表的头节点,然后比较两个指针指向的节点的值,如果相等,则说明是交集的元素,将其添加到结果链表中,并将两个指针都向后移动一位;如果不相等,就将值较小的指针向后移动一位。重复这个过程直到其中一个链表为空。
以下是一个示例代码实现:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def getIntersection(head1, head2):
dummy = ListNode() # 创建一个虚拟头节点
tail = dummy # 创建一个尾节点
while head1 and head2:
if head1.val == head2.val: # 如果节点值相等,则将该节点添加到结果链表中
tail.next = ListNode(head1.val)
tail = tail.next
head1 = head1.next
head2 = head2.next
elif head1.val < head2.val: # 如果节点值不相等,则将值较小的节点向后移动一位
head1 = head1.next
else:
head2 = head2.next
return dummy.next # 返回结果链表的头节点
# 示例用法
# 创建第一个链表: 1 -> 2 -> 3 -> 4 -> None
head1 = ListNode(1)
head1.next = ListNode(2)
head1.next.next = ListNode(3)
head1.next.next.next = ListNode(4)
# 创建第二个链表: 2 -> 4 -> None
head2 = ListNode(2)
head2.next = ListNode(4)
# 获取交集: 2 -> 4 -> None
intersection = getIntersection(head1, head2)
while intersection:
print(intersection.val, end=" ")
intersection = intersection.next
```
阅读全文