两个非递减的有序链表合并
时间: 2023-12-12 22:04:29 浏览: 104
设计算法合并非递减有序链表
5星 · 资源好评率100%
可以使用双指针的方法来合并两个非递减的有序链表。具体步骤如下:
1. 创建一个新的链表来存储合并后的结果。
2. 初始化两个指针,分别指向两个链表的头节点。
3. 比较两个指针所指节点的值,将较小的节点加入到新链表中,并将对应链表的指针后移一位。
4. 重复步骤3,直到其中一个链表遍历完毕。
5. 将剩余链表中的节点直接添加到新链表的末尾。
6. 返回新链表作为合并后的结果。
以下是一个示例代码:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def mergeLists(l1, l2):
dummy = ListNode() # 创建一个虚拟头节点
curr = dummy # 当前节点指针
while l1 and l2:
if l1.val <= l2.val:
curr.next = l1
l1 = l1.next
else:
curr.next = l2
l2 = l2.next
curr = curr.next
# 将剩余链表中的节点添加到新链表末尾
if l1:
curr.next = l1
if l2:
curr.next = l2
return dummy.next
# 示例用法
# 创建链表 1->2->4
l1 = ListNode(1)
l1.next = ListNode(2)
l1.next.next = ListNode(4)
# 创建链表 1->3->4
l2 = ListNode(1)
l2.next = ListNode(3)
2.next.next = ListNode(4)
result = mergeLists(l1, l2)
# 输出合并后的链表:1->1->2->3->4->4
while result:
print(result.val, end="->")
result = result.next
```
阅读全文