该题目是合并2个有序的链表。主要实现思路如下:
- 链表是有序的。比较的时候只要list1的值大于list2的中的就一直插入数据。反之亦然。
- 要用链表才能通过,不能使用数组
- 注意空链表以及终止条件
# Definition for singly-linked list.
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
class Solution:
def appendList(self,list1: Optional[ListNode], list2: Optional[ListNode]) -> Optional[ListNode]:
while list2:
list1.next = ListNode(list2.val)
list1 = list1.next
list2 = list2.next
def mergeTwoLists(self, list1: Optional[ListNode], list2: Optional[ListNode]) -> Optional[ListNode]:
if not list2:
return list1
if not list1:
return list2
if list1.val > list2.val:
r = m = ListNode(list2.val)
list2 = list2.next
if not list2:
self.appendList(m,list1)
return r
else:
r = m = ListNode(list1.val)
list1 = list1.next
while list1:
while list1.val > list2.val:
m.next = ListNode(list2.val)
m = m.next
list2 = list2.next
if not list2:
self.appendList(m,list1)
return r
m.next = ListNode(list1.val)
m = m.next
list1 = list1.next
self.appendList(m,list2)
return r