标签:牌堆 ListNode 21 val lists next merge l2 l1
21 merge two sorted lists
1. 题目描述
给定两个已排序的链表,将这两个链表合并成一个排好序的链表
2. 题解
参照归并排序中的merge操作。想象有两个牌堆,每个牌堆都已经排好序,将这两个牌堆最上面的牌进行比较,小的放入新牌堆。
注意最后可能会形成有一个牌堆已经比较完,还有一个牌堆还剩余很多牌,将剩余的牌直接放入新牌堆即可。
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
ListNode* result = new ListNode(0);
ListNode* p = result;
while (l1 and l2) {
if (l1->val > l2->val) {
p->next = new ListNode(l2->val);
l2 = l2->next;
}else{
p->next = new ListNode(l1->val);
l1 = l1->next;
}
p = p->next;
}
if (l1) {
p->next = l1;
}
if (l2) {
p->next = l2;
}
return result->next;
}
};
3. 视频讲解
<iframe frameborder="no" scrolling="no" src="//player.bilibili.com/player.html?aid=587463443&bvid=BV1ZB4y1P7Bd&cid=319937794&page=1&as_wide=1&high_quality=1&danmaku=0" style="position: absolute; width: 100%; height: 100%; left: 0; top: 0"></iframe>4. 总结
题源还是来自于经典的算法本身
标签:牌堆,ListNode,21,val,lists,next,merge,l2,l1 来源: https://www.cnblogs.com/MartinTai/p/14620095.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。