pta 两个有序链表序列的交集
时间: 2024-01-07 14:05:44 浏览: 88
两个有序链表的交集可以通过遍历两个链表,比较节点的值来找到相同的节点,然后将相同的节点添加到结果链表中。具体的步骤如下:
1. 定义一个结果链表和两个指针,分别指向两个链表的头节点。
2. 使用循环遍历两个链表,直到其中一个链表遍历完成。
3. 在每一次循环中,比较当前节点的值,如果相等,则将该节点添加到结果链表中,并将两个指针都向后移动一位。
4. 如果当前节点的值不相等,则将值较小的节点的指针向后移动一位。
5. 继续进行循环,直到其中一个链表遍历完成。
6. 返回结果链表作为交集结果。
相关问题
两个有序链表序列的交集pta
两个有序链表序列的交集可以通过双指针法来求解。假设两个链表分别为list1和list2,我们可以使用两个指针指向list1和list2的头节点,并逐个比较节点的值。如果节点值相等,则将该值添加到结果列表中,并将两个指针都向后移动一位。如果节点值不相等,则将值较小的指针向后移动一位。直到其中一个链表遍历完毕,即可得到两个有序链表序列的交集。
下面是一个示例代码:
```python
def findIntersection(list1, list2):
ptr1, ptr2 = list1.head, list2.head
result = []
while ptr1 and ptr2:
if ptr1.val == ptr2.val:
result.append(ptr1.val)
ptr1 = ptr1.next
ptr2 = ptr2.next
elif ptr1.val < ptr2.val:
ptr1 = ptr1.next
else:
ptr2 = ptr2.next
return result
```
pta两个有序链表序列的合并
两个有序链表的合并可以通过比较两个链表的元素值,并依次构建一个新的链表。具体步骤如下:
1. 创建一个新的链表作为合并后的结果链表,并定义一个指针指向该链表的头节点。
2. 比较两个链表的头节点的元素值,将较小的元素值作为合并后链表的当前节点,并将指针指向下一个节点。
3. 重复步骤2,直到其中一个链表为空。
4. 将另一个链表中剩余的节点直接连接到合并后链表的尾部。
以下是一个示例代码:
```python
def Merge(L1, L2):
dummy = ListNode(0) # 创建一个虚拟节点作为合并后链表的头节点
p = dummy # 定义指针指向合并后链表的当前节点
while L1 and L2:
if L1.val <= L2.val:
p.next = L1
L1 = L1.next
else:
p.next = L2
L2 = L2.next
p = p.next
if L1:
p.next = L1
if L2:
p.next = L2
return dummy.next
```
阅读全文