LeetCode第21题:合并两个有序链表
2024-10-21 16:05:48
题目描述:
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
解题思路:
很显然的,两个链表已经有序,这道题用递归解决比较简单,代码也会很清晰。
l1为空,则返回l2;
l2为空,则返回l1;
否则比较l1和l2头元素的大小,将较小者作为新链表开头,剩下的两个链表递归进行合并即可。
C++代码:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
//l1为空,返回l2
if(l1==nullptr)
return l2;
//l2为空,返回l1
if(l2==nullptr)
return l1;
ListNode* newList;
//l1小于l2的值,l1的值作为开头
//剩余的数字进行递归合并
if(l1->val<l2->val){
newList=new ListNode(l1->val);
newList->next=mergeTwoLists(l1->next,l2);
}
//l2小于l1的值,l2的值作为开头
//剩余的数字进行递归合并
else{
newList=new ListNode(l2->val);
newList->next=mergeTwoLists(l1,l2->next);
}
return newList;
}
};
运行结果:
最新文章
- Linux/CentOS优化配置 汇总
- ACM/ICPC 之 Unix会议室(POJ1087)
- 利用ListView的基本方法实现效果
- A.Kaw矩阵代数初步学习笔记 5. System of Equations
- HDU 4632 Palindrome subsequence (区间DP)
- bzoj 3218 a + b Problem(最小割+主席树)
- 怎样开发Chrome浏览器的插件
- const char*, char const* and char *const 分类: C/C++ OpenCV 2014-11-08 18:10 114人阅读 评论(0) 收藏
- SEO的URL如何优化才是最佳
- 如何在Github Pages搭建自己写的页面?
- qstring.h赏析
- CentOS7 ssh无密码登录
- ORACLE 中NUMBER类型默认的精度和Scale问题
- idea取消vim模式
- php utf8编码字符串的截取
- Vxlan学习笔记——实现
- error while loading shared libraries: libmysqlcppconn.so.7: cannot open shared object file: No such file or directory
- 使用UltraISO制作Windows 10启动U盘
- 最好的Java和Android开发IDE---IntelliJ IDEA使用技巧
- JetBrains全家桶使用攻略
热门文章
- mac外接键盘修饰键设置
- UVA - 10817 Headmaster&#39;s Headache (状压类背包dp+三进制编码)
- redis 双写一致性问题
- hadoop完全分布式文件系统集群搭建
- UFLDL新版教程
- mysql之 Innobackupex(全备+增量)备份恢复
- asp.net自动将页面中的所有空间置为不可用以及将所有文本框置空
- Java-API:java.util.regex.Pattern
- [转]RegExp 构造函数创建了一个正则表达式对象,用于将文本与一个模式匹配
- JavaScript语言基础-包装对象