1. 程式人生 > 其它 >連結串列習題3:合併兩個有序連結串列

連結串列習題3:合併兩個有序連結串列

技術標籤:資料結構與演算法

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

Python解法1:

# 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: if l1 is None and l2 is None: return l1 elif l1 is None and l2 is not None: return l2 elif l1 is not None and l2 is None: return l1 else: l = [] p1 = l1 p2 = l2 while
p1 : l.append(p1.val) p1 = p1.next while p2 : l.append(p2.val) p2 = p2.next l.sort() head = ListNode(val = l[0]) for i in range(len(l)): if i == 0 : p =
head else: p.next = ListNode(l[i]) p = p.next return head

在這裡插入圖片描述
經驗:
1.函式最後返回頭結點head才能輸出完整的連結串列,返回p只能返回一個結點
2.這種解法要考慮輸入的引數連結串列為空的情況,
3.head的宣告如果放在for迴圈裡面就會出現local variable referenced before assignment
4.這種解法思路直接,但演算法時間複雜度和空間複雜度太差,僅用於理解