题目描述:

将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

示例:

输入: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;
}
};

运行结果:

最新文章

  1. Linux/CentOS优化配置 汇总
  2. ACM/ICPC 之 Unix会议室(POJ1087)
  3. 利用ListView的基本方法实现效果
  4. A.Kaw矩阵代数初步学习笔记 5. System of Equations
  5. HDU 4632 Palindrome subsequence (区间DP)
  6. bzoj 3218 a + b Problem(最小割+主席树)
  7. 怎样开发Chrome浏览器的插件
  8. const char*, char const* and char *const 分类: C/C++ OpenCV 2014-11-08 18:10 114人阅读 评论(0) 收藏
  9. SEO的URL如何优化才是最佳
  10. 如何在Github Pages搭建自己写的页面?
  11. qstring.h赏析
  12. CentOS7 ssh无密码登录
  13. ORACLE 中NUMBER类型默认的精度和Scale问题
  14. idea取消vim模式
  15. php utf8编码字符串的截取
  16. Vxlan学习笔记——实现
  17. error while loading shared libraries: libmysqlcppconn.so.7: cannot open shared object file: No such file or directory
  18. 使用UltraISO制作Windows 10启动U盘
  19. 最好的Java和Android开发IDE---IntelliJ IDEA使用技巧
  20. JetBrains全家桶使用攻略

热门文章

  1. mac外接键盘修饰键设置
  2. UVA - 10817 Headmaster&#39;s Headache (状压类背包dp+三进制编码)
  3. redis 双写一致性问题
  4. hadoop完全分布式文件系统集群搭建
  5. UFLDL新版教程
  6. mysql之 Innobackupex(全备+增量)备份恢复
  7. asp.net自动将页面中的所有空间置为不可用以及将所有文本框置空
  8. Java-API:java.util.regex.Pattern
  9. [转]RegExp 构造函数创建了一个正则表达式对象,用于将文本与一个模式匹配
  10. JavaScript语言基础-包装对象