leetcode21——合併兩個有序列表(簡單,0)

見了鏈表就發愁的zyw…

題目

將兩個有序鏈表合併爲一個新的有序鏈表並返回。新鏈表是通過拼接給定的兩個鏈表的所有節點組成的。

示例:

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

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/merge-two-sorted-lists
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。

解答

code

# 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 and l2:
            if l1.val > l2.val: l1, l2 = l2, l1
            l1.next = self.mergeTwoLists(l1.next, l2)
        return l1 or l2

思路

備註:

在 Python 中,and 和 or 都有提前截至運算的功能。
and:如果 and 前面的表達式已經爲 False,那麼 and 之後的表達式將被 跳過,返回左表達式結果
or:如果 or 前面的表達式已經爲 True,那麼 or 之後的表達式將被跳過,直接返回左表達式的結果
例子:[] and 7 等於 []

代碼流程:(按行數)

判斷 l1 或 l2 中是否有一個節點爲空,如果存在,那麼我們只需要把不爲空的節點接到鏈表後面即可
對 l1 和 l2 重新賦值,使得 l1 指向比較小的那個節點對象
修改 l1 的 next 屬性爲遞歸函數返回值
返回 l1,注意:如果 l1 和 l2 同時爲 None,此時遞歸停止返回 None

作者:QQqun902025048
鏈接:https://leetcode-cn.com/problems/merge-two-sorted-lists/solution/python-4xing-by-knifezhu-3/
來源:力扣(LeetCode)
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

思路即比較兩個列表當前節點(以後也不再修改和操作該節點以前得部分),隨後確定下個節點(通過不停交換後半個列表)。

結果

在這裏插入圖片描述

感想

遞歸好繞哦,,,當初就沒學好,得多下功夫
列表也很繞,操作不熟練

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章