
剑指offer Leetcode 25.合并两个排序的链表
发布日期:2021-05-06 23:39:28
浏览次数:24
分类:精选文章
本文共 1402 字,大约阅读时间需要 4 分钟。
解法1:迭代
注意:
●要考虑输入为空的情况。
●要注意返回和遍历,用一个哨兵节点来返回,用一个cur指针来遍历
●注意每轮要更新cur即cur = cur->next;
代码:
class Solution { public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { //考虑输入为空 if(l1 == NULL && l2 == NULL) return NULL; if(l1 == NULL) return l2; if(l2 == NULL) return l1; //要新建一个哨兵节点,利用哨兵节点的next来返回head ListNode* dummynode = new ListNode; //利用一个指针来遍历 ListNode* cur = dummynode; while(l1 != NULL && l2 != NULL){ if(l1->val <= l2->val){ cur->next = l1; l1 = l1->next; } else{ cur->next = l2; l2 = l2->next; } cur = cur->next; } //至少有一个为空 if(l1 != NULL) cur->next = l1; if(l2 != NULL) cur->next = l2; return dummynode->next; }};
解法2:递归
注意:
●通过l1和l2来返回最后的头节点
代码:
class Solution { public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { if(l1 == NULL && l2 == NULL) return NULL; if(l1 == NULL) return l2; if(l2 == NULL) return l1; if(l1->val <= l2->val){ l1->next = mergeTwoLists(l1->next, l2); return l1; } else{ l2->next = mergeTwoLists(l1, l2->next); return l2; } }};
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年03月25日 14时20分20秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
c++中ifstream及ofstream超详细说明
2021-05-08
web项目配置
2021-05-08
基于单片机简易信号误差分析设计-全套资料
2021-05-08
基于单片机简易脉搏测量仪系统设计-毕设课设资料
2021-05-08
Javascript中String支持使用正则表达式的四种方法
2021-05-08
Servlet2.5的增删改查功能分析与实现------删除功能(四)
2021-05-08
spring启动错误:Could not resolve placeholder
2021-05-08
invalid byte sequence for encoding
2021-05-08
技术美术面试问题整理
2021-05-08
ORB-SLAM2:LoopClosing线程学习随笔【李哈哈:看看总有收获篇】
2021-05-08
js求阶乘
2021-05-08
Nginx---惊群
2021-05-08
项目中常用的审计类型概述
2021-05-08
(九)实现页面底部购物车的样式
2021-05-08
python-day3 for语句完整使用
2021-05-08
基于LabVIEW的入门指南
2021-05-08
weblogic之cve-2015-4852
2021-05-08
Java注释
2021-05-08