提出問題:將兩個有序鏈表合併爲一個新的有序鏈表並返回。新鏈表是通過拼接給定的兩個鏈表的所有節點組成的。
示例:
輸入:1->2->4, 1->3->4
輸出:1->1->2->3->4->4
解決思路:合併鏈表很簡單,設置兩個指針遍歷兩個鏈表,同時遍歷並比較大小,如果1鏈表的當前節點值較小,將該節點添加到新鏈表中,1鏈表遍歷指針後移一位,直到兩個鏈表內所有節點都添加到新鏈表中。注意:題目要求新鏈表是通過拼接給定的兩個鏈表的所有節點組成的,所以初始新建一個頭節點,將頭節點下一個節點指針指向兩個鏈表中的最小節點,最後返回頭節點的下一個節點。
代碼如下( ̄▽ ̄):
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
if l1==None:
return l2
elif l2==None:
return l1
else:
h1 = l1
h2 = l2
head = ListNode(0)
result = head
while h1!=None and h2!=None:
if h1.val <= h2.val:
head.next = h1
h1 = h1.next
else:
head.next = h2
h2 = h2.next
head = head.next
if h1!=None:
head.next = h1
if h2!=None:
head.next = h2
return result.next
時間與空間複雜度: