測試開發每日演算法 Leecode21. 合併兩個有序連結串列

MmoMartin發表於2020-06-18

題目難易程度: Easy

將兩個升序連結串列合併為一個新的 升序 連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。

示例 1:

輸入:1->2->4, 1->3->4
輸出:1->1->2->3->4->4

連結串列分單連結串列與雙連結串列,還有環連結串列等形式,就單連結串列而言,連結串列結構的其他操作因在另外一張文章有寫,在這裡就不再多加敘述。
思路:目前本題的連結串列是升序連結串列,做法如下:使用遞迴完成本題。

# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
new_node_list = None
if l1 == None:
return l2
if l2 == None:
return l1
if l1.val > l2.val:
new_node_list = l2
new_node_list.next = self.mergeTwoLists(l1,l2.next)
else:
new_node_list = l1
new_node_list.next = self.mergeTwoLists(l1.next,l2)
return new_node_list

我在上上個星期面試阿里的第一面面試時,上機操作的題目是:兩個無續的連結串列,合併成一個有序的連結串列,步驟也操作,只是將兩個無序連結串列排序,用上述的合併方法整合就行。

相關文章