算法:合并两个有序链表
生活随笔
收集整理的這篇文章主要介紹了
算法:合并两个有序链表
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題目
合并兩個(gè)有序鏈表
將兩個(gè)有序鏈表合并為一個(gè)新的有序鏈表并返回。新鏈表是通過拼接給定的兩個(gè)鏈表的所有節(jié)點(diǎn)組成的。
示例:
輸入:1->2->4, 1->3->4
輸出:1->1->2->3->4->4
遞歸就是一個(gè)壓棧和彈棧的過程,每次對(duì)一個(gè)節(jié)點(diǎn)進(jìn)行壓棧,然后重新鏈表的末尾開始彈棧,直到一直彈棧賦值到新鏈表的首節(jié)點(diǎn)。
class Solution { public:ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {ListNode* preHead = new ListNode(-1);ListNode* prev = preHead;while (l1 != nullptr && l2 != nullptr) {if (l1->val < l2->val) {prev->next = l1;l1 = l1->next;} else {prev->next = l2;l2 = l2->next;}prev = prev->next;}// 合并后 l1 和 l2 最多只有一個(gè)還未被合并完,我們直接將鏈表末尾指向未合并完的鏈表即可prev->next = l1 == nullptr ? l2 : l1;return preHead->next;} };?
總結(jié)
以上是生活随笔為你收集整理的算法:合并两个有序链表的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 面试题:回文数
- 下一篇: 算法:删除数组中的重复项