Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.
Example:
Input: 1->2->4, 1->3->4 Output: 1->1->2->3->4->4
方法一:python 两个链表的结点一一对比,当遍历到一个链表的结尾时,将另一个链表剩余结点连接到新链表之后
class Solution(object):
def mergeList(self, l1, l2):
"""
:type l1: ListNode
:type l2: ListNode
:rtype: ListNode
"""
head = cur = ListNode(0)
while l1 and l2:
if l1.val <= l2.val:
cur.next = l1
l1 = l1.next
cur = cur.next
else:
cur.next = l2
l2 = l2.next
cur = cur.next
cur.next = l1 or l2
# print("#3")
# cur.next = l1
# l1 = l1.next
# cur = cur.next
# while l2
# cur.next = l2
# l2 = l2.next
# cur = cur.next
return head.next
方法二:令新链表等于l1,将l2的结点插入到正确的位置
class Solution(object):
def mergeTwoLists(self, l1, l2):
"""
:type l1: ListNode
:type l2: ListNode
:rtype: ListNode
"""
head = cur = ListNode(0)
head.next = l1
while l1 and l2:
if l1.val <= l2.val:
cur = l1
l1 = l1.next
else:
temp = l2
l2 = l2.next
temp.next = l1
cur.next = temp
cur = temp
cur.next = l1 or l2
return head.next
方法三:递归
def mergeList(self,l1,l2):
if None in (l1,l2):
return l1 or l2
if l1.val <= l2.val:
l1.next = self.mergeList(l1.next,l2)
return l1
else:
l2.next = self.mergeList(l1,l2.next)
return l2