题目
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
注意:是链表
代码
class Solution:
def mergeTwoLists(self, l1: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]:
if l1 and l2:
if l1.val > l2.val:
l1, l2 = l2, l1
l1.next = self.mergeTwoLists(l1.next, l2)
return l1 or l2
使用递归,比较头节点,将小的头节点指向取出,将剩下的两个链表继续传入函数,将小的头节点指向函数返回的链表。
链表基本操作
class LinkNode():
def __init__(self, val = 0, next=None):
self.val = val
self.next = next
def __str__(self):
# 必须返回字符串对象
return str(self.val) + '-->' if self.next else str(self.val)
class LinkList():
def creat_link_list(self):
self.head = None
node1 = LinkNode(1)
node2 = LinkNode(0)
node3 = LinkNode(1)
print('node1:', node1)
node1.next = node2
node2.next = node3
self.head = node1
def show_link_list(self):
current = self.head
result = ""
while current:
result += str(current)
current = current.next
print(result)
if __name__ == '__main__':
linklist = LinkList()
linklist.creat_link_list()
linklist.show_link_list()