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