LeetCode Algorithm 剑指 Offer 25. 合并两个排序的链表
Posted _Alex_007
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode Algorithm 剑指 Offer 25. 合并两个排序的链表相关的知识,希望对你有一定的参考价值。
Ideas
这题让我想到了归并排序:
- 划分问题:把序列分成元素个数尽量相等的两半;
- 递归求解:把两半元素分别排序;
- 合并问题:把两个有序表合并成一个。
捞一张之前的老图来看一下归并排序的过程:
这题相当于归并排序的最后一步:合并两个有序表。
循环比对两个链表头的值,取小的那个添加到新的链表的尾部。
C++
class Solution
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2)
ListNode* res = new ListNode(0), *p = res;
while (l1 && l2)
if (l1->val < l2->val)
p->next = l1;
l1 = l1->next;
else
p->next = l2;
l2 = l2->next;
p = p->next;
p->next = l1 ? l1 : l2;
return res->next;
;
以上是关于LeetCode Algorithm 剑指 Offer 25. 合并两个排序的链表的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode Algorithm 剑指 Offer 24. 反转链表
LeetCode Algorithm 剑指 Offer 18. 删除链表的节点
LeetCode Algorithm 剑指 Offer 06. 从尾到头打印链表
LeetCode Algorithm 剑指 Offer 22. 链表中倒数第k个节点