力扣合并两个有序链表
时间: 2023-09-13 20:09:33 浏览: 169
leetcode分发糖果-wya-leetcode-server:力扣(LeetCode)
要合并两个有序链表,可以使用递归或迭代的方式。
以下是使用迭代的方法:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def mergeTwoLists(l1: ListNode, l2: ListNode) -> ListNode:
# 创建一个哑结点作为合并后的链表的头结点
dummy = ListNode(0)
# 创建一个指针用于遍历合并后的链表
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
```
这个方法的时间复杂度是 O(n + m),其中 n 和 m 分别是两个链表的长度。
希望对你有帮助!如果有任何其他问题,请随时问我。
阅读全文