python 合并两个有序链表 多种解法
原创
©著作权归作者所有:来自51CTO博客作者编程小白狼的原创作品,请联系作者获取转载授权,否则将追究法律责任
- 递归解法:
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def mergeTwoLists(l1, l2):
if not l1:
return l2
if not l2:
return l1
if l1.val < l2.val:
l1.next = mergeTwoLists(l1.next, l2)
return l1
else:
l2.next = mergeTwoLists(l1, l2.next)
return l2
- 迭代解法:
def mergeTwoLists(l1, l2):
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
curr.next = l1 or l2
return dummy.next
- 使用队列解法:
import queue
def mergeTwoLists(l1, l2):
q = queue.Queue()
while l1:
q.put(l1.val)
l1 = l1.next
while l2:
q.put(l2.val)
l2 = l2.next
dummy = ListNode(0)
curr = dummy
while not q.empty():
curr.next = ListNode(q.get())
curr = curr.next
return dummy.next