見了鏈表就發愁的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)
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。
注
思路即比較兩個列表當前節點(以後也不再修改和操作該節點以前得部分),隨後確定下個節點(通過不停交換後半個列表)。
結果
感想
遞歸好繞哦,,,當初就沒學好,得多下功夫
列表也很繞,操作不熟練