leetcode之合併兩個鍊錶

2021-10-05 19:43:48 字數 917 閱讀 6372

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

示例:輸入:1->2->4, 1->3->4

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

題目解析:

首先,我們設定乙個哨兵節點 prehead ,這可以在最後讓我們比較容易地返回合併後的鍊錶。我們維護乙個 cur指標,我們需要做的是調整它的 next 指標。然後,我們重複以下過程,直到 l1 或者 l2 指向了 null:如果 l1 當前節點的值小於等於 l2 ,我們就把 l1 當前的節點接在 cur 節點的後面同時將 l1 指標往後移一位。否則,我們對 l2 做同樣的操作。不管我們將哪乙個元素接在了後面,我們都需要把 cur向後移一位。

在迴圈終止的時候, l1 和 l2 至多有乙個是非空的。由於輸入的兩個鍊錶都是有序的,所以不管哪個鍊錶是非空的,它包含的所有元素都比前面已經合併鍊錶中的所有元素都要大。這意味著我們只需要簡單地將非空鍊錶接在合併鍊錶的後面,並返回合併鍊錶即可。

/**

* definition for singly-linked list.

* struct listnode

* };

*/class

solution

while

(l1!=

null

&& l2!=

null

)else

cur=cur-

>next;

} cur-

>next=l1==

null

?l2:l1;

//連線完之後哪個鍊錶非空,指向非空鍊錶

delete prehead;

//釋放空間

return prehead-

>next;}}

;

LeetCode 合併兩個鍊錶

將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4 遍歷解法 同時不斷遍歷兩個鍊錶,取出小的追加到新的頭節點後,直至兩者其中乙個為空 再將另一者追加的新鍊錶最後 public listnode ...

leetcode之合併兩個有序鍊錶

題目 將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4 思路 從兩鍊錶第乙個結點開始比較結點的值,取較小者作為合併鍊錶的元素,依次進行 後面如果有乙個鍊錶為空,則直接把不為空的鍊錶接到合併鍊錶...

LeetCode 鍊錶 合併兩個有序鍊錶

將兩個公升序鍊錶合併為乙個新的 公升序 鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4 使用迭代。如下 definition for singly linked list.struct listnode listnode ...