程序地带

21. 合并两个有序链表


在这里插入图片描述 在这里插入图片描述 新建一个h结点作为新链表的头(哨兵结点),要new不要初始化为nullptr,来一个cur来在链表上移动。遍历两条链表,只要一条空就结束遍历,用cur的next指向未空的另一条链表即可。将比较小的那个结点直接拷贝构造,是深拷贝等于新建一个结点,而不是指向l1,不然会改变l1的指向。并将cur指向next,l1也往后走一步。l2同理。最后返回哨兵的next


/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
if(l1 == nullptr) return l2;
if(l2 == nullptr) return l1;
//链表=双指针=空间鲁棒性
//两个指针分别在两点链表上走,找到比较小的就用其作为新结点
ListNode* h = new ListNode(0);
ListNode* cur = h;
while(l1 != nullptr && l2 !=nullptr){
if(l1->val <= l2->val){
cur->next = l1;
l1 = l1->next;
cur = cur->next;
}
else{
cur->next = l2;
l2 = l2->next;
cur = cur->next;
}
}
cur->next = l1==nullptr ? l2:l1;
return h->next;
}
};

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/J_avaSmallWhite/article/details/112760958

随机推荐

vs2019运行提示脚本错误

vs2019运行提示脚本错误

 重装系统安装vs2019运行项目报错经查,安装IE11即可解决此问题。参考资料:https://blog.csdn.net/lingxiu0613/article/det...

auccy 阅读(739)

FPGA的学习历程-入门篇

FPGA的学习主要分为以下几个方面:1、编程语言目前主流的编程语言主要是Verilog和VHDL,Verilog语法风格更像C语言,VHDL语法更为简单一点&...

zj907638274 阅读(739)

前端小白入门webpack中对于css、less、图片的处理

前端小白入门webpack中对于css、less、图片的处理

文章目录前言一、css处理步骤二、less文件处理步骤三、图片文件处理步骤总结今日推荐前言本篇我们一起来进行在webpack中如何处理css,用模块化的方式来添加样式,使用...

既白1997 阅读(219)

Java中的与或非、异或运算

Java中的与、或、非运算与(&)运算符两个位都为1,则为1,否则为0;publicstaticvoidpositiveAnd(){//正数的原码、反码、补码...

java资深码农 阅读(683)

【显卡挖矿】Beam挖矿教程

【显卡挖矿】Beam挖矿教程

Beam是基于MimbleWimble协议开发的,具有良好的隐私保护和可扩展性的数字货币。在发展的前12到18个月,为保证其抗ASIC特性,Beam大约每半年...

mazhqcs 阅读(318)