leetcode 合併兩個有序鍊錶

2021-10-09 16:58:48 字數 1213 閱讀 4187

題目描述

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

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

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

方法一:(迭代)

演算法思路:建立乙個新節點prenode,用於返回合併後的鍊錶,建立乙個指標prev先指向prenode,然後通過調整其next指標來進行迭代,比較l1與l2節點中那個值更小,更小的乙個賦給prev->next,然後l1(或者l2)與prev指標向後移,直到有其中乙個指標為空。最後判斷哪乙個鍊錶非空,並將其連線在合併鍊錶的最後乙個位置。

/**

* definition for singly-linked list.

* struct listnode

* listnode(int x) : val(x), next(nullptr) {}

* listnode(int x, listnode *next) : val(x), next(next) {}

* };

*/typedef listnode* ptrtonode;

class

solution

else

} prev-

>next=l1==

nullptr

?l2:l1;

//將非空鍊錶的最後乙個節點接入合併鍊錶

return prenode-

>next;}}

;

方法二:(遞迴)

/**

* definition for singly-linked list.

* struct listnode

* listnode(int x) : val(x), next(nullptr) {}

* listnode(int x, listnode *next) : val(x), next(next) {}

* };

*/class

solution

else

if(l2 ==

nullptr

)else

if(l1-

>val < l2-

>val)

else}}

;

LeetCode 合併兩個有序鍊錶

將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4輸出 1 1 2 3 4 4class solution else listnode p new head while l1 null l2 null else p p ne...

LeetCode 合併兩個有序鍊錶

將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4 struct listnode mergetwolists struct listnode l1,struct listnode l2 els...

leetcode 合併兩個有序鍊錶

definition for singly linked list.public class listnode class solution if l2 null listnode retnode null listnode temnode null while l1 null l2 null el...