LintCode-165 · 合并两个排序链表-题解
2024-10-16 17:46:19
描述:
将两个排序(升序)链表合并为一个新的升序排序链表
样例 1:
输入: list1 = null, list2 = 0->3->3->null
输出: 0->3->3->null
样例2:
输入: list1 = 1->3->8->11->15->null, list2 = 2->null
输出: 1->2->3->8->11->15->null
解题思路:
先对特殊情况进行判断,再创建一个指针p用来接收两个链表的头节点中较小的那一个,然后将这个链表的next和另一个链表再次递归下去。
AC代码如下:
/**
* Definition of singly-linked-list:
* class ListNode {
* public:
* int val;
* ListNode *next;
* ListNode(int val) {
* this->val = val;
* this->next = NULL;
* }
* }
*/ class Solution {
public:
/**
* @param l1: ListNode l1 is the head of the linked list
* @param l2: ListNode l2 is the head of the linked list
* @return: ListNode head of linked list
*/
ListNode * mergeTwoLists(ListNode * l1, ListNode * l2) {
// write your code here
if(!l1 && l2) return l2;
else if(l1 && !l2) return l1;
else if(!l1 && !l2) return NULL;
ListNode *p;
if(l1->val < l2->val){
p=l1;
p->next=mergeTwoLists(l1->next,l2);
}
else{
p=l2;
p->next=mergeTwoLists(l1,l2->next);
}
return p;
}
};
最新文章
- 004-For与Function进阶实战、Lazy的使用
- AngularJS中的Provider们:Service和Factory等的区别
- MySQL的简单查询语句
- css布局之三列布局
- WORD2003电子签名插件(支持手写、签章)
- hdu 2063 过山车(二分图最佳匹配)
- AIX 第4章 指令记录
- Add external tool in the Android Studio
- linux下查看jdk路径
- long double
- Linux中安装mongodb
- Docker 搭建Spark 依赖sequenceiq/spark:1.6镜像
- What makes for effective detection proposals? 论文解析
- virtualbox谨记:win7上只有4.3.x的版本支持ubuntu14.04.3虚拟机安装Oracle Rac,其他的版本3.x和5.0.2(至2015-08-30)均不可以
- Go第四篇之流程控制
- android开发:Android 中自定义属性(attr.xml,TypedArray)的使用
- java对文件的操作
- 未知高度的图片在div设置垂直居中
- android缓存具体解释
- TextWatcher