题目
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
思路
将两个链表之中的数值转换到列表之中,并进行排序,将排序后的列表构造成链表。
解答
方法一
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
class Solution:
def Merge(self, pHead1, pHead2):
if pHead1 is None or pHead2 is None:
return None
num1, num2 = [], []
while pHead1:
num1.append(pHead1.val)
pHead1 = pHead1.next
while pHead2:
num2.append(pHead2.val)
pHead2 = pHead2.next
ans = num1 + num2
ans.sort()
head = ListNode(ans[0])
pre = head
for i in range(1, len(ans)):
node = ListNode(ans[i])
pre.next = node
pre = pre.next
return head.val
思路
双指针。
解答
方法二
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
class Solution:
def Merge(self, pHead1, pHead2):
if pHead1 is None or pHead2 is None:
return None
newHead = pHead1 if pHead1.val < pHead2.val else pHead2
if newHead == pHead1:
pHead1 = pHead1.next
else:
pHead2 = pHead2.next
pre = newHead
while pHead1 and pHead2:
if pHead2.val > pHead1.val:
pre.next = pHead1
pre = pHead1
pHead1 = pHead1.next
else:
pre.next = pHead2
pre.next = pHead2
pHead2 = pHead2.next
if pHead1 == None:
pre.next = pHead2
else:
pre.next = pHead1
return newHead.val