題目來源:
題目分析:
題目給出兩個排好序的鏈表,將這兩個鏈表整合成一個新的有序的鏈表。
這裏通過看程序可以發現定義了一個ListNode類來描述鏈表。並且這裏構建的是單鏈表。需要注意的是我們需要定義一個虛表頭,並且注意不要讓它移動,設定一個yau=tou,然後兩個表的指針一步步移動,並通過比較val的大小決定哪個插入yau.next;最後返回tou.next就可以獲得正確的結果
程序代碼:
# Definition for singly-linked list.
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
class Solution:
def mergeTwoLists(self, l1, l2):
"""
:type l1: ListNode
:type l2: ListNode
:rtype: ListNode
"""
if(not l1 and not l2):
return
tou=ListNode(0)
yau=tou
while (l1 and l2):
if(l1.val<=l2.val):
yau.next=l1
l1=l1.next
else:
yau.next=l2
l2=l2.next
yau=yau.next
yau.next=(l1 or l2)
return (tou.next)
測試代碼(網上當的):但是運行時什麼都沒有出現,不知道爲什麼!有大神可以解答嗎?
arr1=[1,2,3]
arr2=[4,5,6]
l1=ListNode(arr1[0])
p1=l1
l2=ListNode(arr2[0])
p2=l2
for i in arr1[1:]:
p1.next=ListNode(i)
p1=p1.next
for i in arr2[1:]:
p2.next=ListNode(i)
p2=p2.next
s=Solution()
q=s.mergeTwoLists(l1,l2)