第2关:基于链表的两个递增有序序列的合并
时间: 2024-10-22 14:18:07 浏览: 44
在计算机科学中,特别是在处理数据结构时,"基于链表的两个递增有序序列的合并"是一个常见的算法问题。给定两个递增排序的链表,例如 `list1` 和 `list2`,目标是将它们合并成一个新的递增有序链表。
解决这个问题的基本步骤如下:
1. 初始化新的链表头节点,表示合并后的结果,如果其中一个链表为空,则直接返回另一个链表作为结果。
2. 定义两个指针,分别指向当前列表的头节点 (`p1` 指向 `list1`,`p2` 指向 `list2`)。
3. 比较两个指针所指向的节点值,将较小的那个节点添加到新链表,并移动对应的指针(如果较小的是 `list1` 的节点,则移动 `p1`;反之则移动 `p2`)。
4. 重复步骤3,直到其中一个链表遍历完。然后将另一个未遍历完的链表剩余部分依次添加到新链表中。
5. 返回新链表的头节点。
这是一个典型的双指针问题,通过比较和移动节点来达到合并的目的。以下是这个过程的一个伪代码示例:
```python
def mergeTwoLists(l1, l2):
if not l1:
return l2
elif not l2:
return l1
if l1.val <= l2.val:
result = ListNode(l1.val)
result.next = mergeTwoLists(l1.next, l2)
else:
result = ListNode(l2.val)
result.next = mergeTwoLists(l1, l2.next)
return result
```
阅读全文