您当前的位置: 首页 >  leetcode

LeetCode Algorithm 剑指 Offer 25. 合并两个排序的链表

发布时间:2021-12-15 09:18:44 ,浏览量:0

剑指 Offer 25. 合并两个排序的链表

Ideas

这题让我想到了归并排序:

  1. 划分问题:把序列分成元素个数尽量相等的两半;
  2. 递归求解:把两半元素分别排序;
  3. 合并问题:把两个有序表合并成一个。

捞一张之前的老图来看一下归并排序的过程: 在这里插入图片描述 这题相当于归并排序的最后一步:合并两个有序表。

循环比对两个链表头的值,取小的那个添加到新的链表的尾部。

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; } }; 
关注
打赏
1688896170
查看更多评论

暂无认证

  • 0浏览

    0关注

    108697博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.2575s