将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例
输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]
解析
1)要解决这个问题,得先介绍一下创建链表的方法,思路一样
2)依次比较两个链表当前节点的值,谁小就把谁接到目标链上
3)如果有一个先走完,直接把另一个接到目标链上即可
代码示例
1、补充链表创建方法
class ListNode():
def __init__(self, val, next=None):
self.val = val
self.next = next
def create_link(lst):
root = ListNode(0)
node = root
for i in lst:
node.next = ListNode(i)
node = node.next
return root.next
def print_link(lk):
while lk:
print(lk.val)
lk = lk.next
lk1 = create_link([1,2,4])
print_link(lk1)
2、合并两个有序链表
def mergeTwoLists(list1, list2):
root = ListNode(0)
node = root
while list1 and list2:
if list1.val < list2.val:
node.next = list1
list1 = list1.next
else:
node.next = list2
list2 = list2.next
node = node.next
if list1:
node.next = list1
if list2:
node.next = list2
return root.next
lk1 = create_link([1,2,4])
lk2 = create_link([1,3,4])
lk3 = mergeTwoLists(lk1, lk2)
print_link(lk3)
本文为 陈华 原创,欢迎转载,但请注明出处:http://www.chenhuax.com/read/350