鍊錶 leetcode 21合併兩個有序鍊錶

2021-10-19 09:13:03 字數 1338 閱讀 6003

當時訂閱了極客時間王爭老師的資料結構與演算法之美專欄,總結的非常好

乙個問題的解可以分解為幾個子問題的解

這個問題與分解之後的子問題,出來數的規模不同,求解思路完全一樣

存在遞迴終止條件

寫遞迴**的關鍵就是找到如何將大問題分解為小問題的規律,並且基於此寫出遞推公式,然後再推敲終止條件,最後將遞推公式和終止條件翻譯成**

編寫遞迴**的關鍵是,只要遇到遞迴,我們就把它抽象成乙個遞推公式,不用想一層層的呼叫關係,不要試圖用人腦去分解遞迴的每個步驟

遞迴**要警惕堆疊溢位

遞迴**要警惕重複計算

有時候乙個問題要分解為多個子問題的情況,可能不好理解.

計算機擅長做重複的事情,所以遞迴正合它的胃口。而我們人腦更喜歡平鋪直敘的思維方式。當我們看到遞迴時,我們總想把遞迴平鋪展開,腦子裡就會迴圈,一層一層往下調,然後再一層一層返回,試圖想搞清楚計算機每一步都是怎麼執行的,這樣就很容易被繞進去。

將兩個公升序鍊錶合併為乙個新的 公升序 鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。

示例 1:

輸入:l1 = [1,2,4], l2 = [1,3,4]

輸出:[1,1,2,3,4,4]

示例 2:

輸入:l1 = , l2 =

輸出:示例 3:

輸入:l1 = , l2 = [0]

輸出:[0]

兩個鍊錶的節點數目範圍是 [0, 50]

-100 <= node.val <= 100

l1 和 l2 均按 非遞減順序 排列

/**

* definition for singly-linked list.

* struct listnode ;

*/struct listnode*

mergetwolists

(struct listnode* l1,

struct listnode* l2)

else

}

/**

* definition for singly-linked list.

* public class listnode

* listnode(int val)

* listnode(int val, listnode next)

* }*/class

solution

else

}}

Leetcode 21 合併鍊錶 python

輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。方法一 非遞迴 coding utf 8 class listnode def init self,x self.val x self.next none class solution 返回合併後列表 def...

leetcode 21 合併公升序鍊錶

將兩個公升序鍊錶合併為乙個新的 公升序 鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4 1.考慮遞迴,如果遍歷的時候,l1節點值小於l2,則返回的應該為此時的l1節點及l1.next和l2拼接後的結果,這就形成了遞迴的條件...

leetcode 21 合併兩個有序鍊錶 鍊錶

題目 將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4 definition for singly linked list.class listnode object def init sel...