合并两个排序链表
2016-03-05 22:02
295 查看
将两个排序链表合并为一个新的排序链表
您在真实的面试中是否遇到过这个题?
Yes
样例
标签
相关题目
笔记
给出
返回
根据题意,首先对于链表的遍历我首先想到用递归。即新建一个空链表Result 让result的头指针指向null,然后就是判断即递归条件为l1.val < l2.val 代码如下:
另一种方法利用指针来做 定义一个空链表 定义一个节点 将空链表的头节点赋值给新建节点 这样保证联系 然后利用while判断 代码如下:
return temp.next;这样就保证了返回的是merge完的链表 不能返回lastNode因其的作用域只是当前;
您在真实的面试中是否遇到过这个题?
Yes
样例
标签
相关题目
笔记
给出
1->3->8->11->15->null,
2->null,
返回
1->2->3->8->11->15->null。
根据题意,首先对于链表的遍历我首先想到用递归。即新建一个空链表Result 让result的头指针指向null,然后就是判断即递归条件为l1.val < l2.val 代码如下:
/** * Created by jason on 2016/3/5. */ class Solution67 { public ListNode mergeTwoLists(ListNode l1, ListNode l2) { if (l1 == null && l2 != null) { return l2; } if (l1 != null && l2 == null) { return l1; } ListNode result; if (l1.val < l2.val) { result = l1; result.next = mergeTwoLists(l1.next,l2); }else { result = l2; result.next = mergeTwoLists(l1, l2.next); } return result; } }
另一种方法利用指针来做 定义一个空链表 定义一个节点 将空链表的头节点赋值给新建节点 这样保证联系 然后利用while判断 代码如下:
public ListNode mergeTwoLists(ListNode l1, ListNode l2) { if (l1 == null && l2 != null) return l2; if (l1 != null && l2 == null) return l1; ListNode temp = new ListNode(0); ListNode lastNode = temp; while (l1 != null && l2 != null) { if (l1.val <l2.val) { lastNode.next = l1; l1 = l1.next; }else { lastNode.next = l2; l2 = l2.next; } lastNode = lastNode.next; } if (l1 != null) { lastNode.next = l1; }else { lastNode.next = l2; } return temp.next; }
return temp.next;这样就保证了返回的是merge完的链表 不能返回lastNode因其的作用域只是当前;
相关文章推荐
- 构建之法阅读笔记01
- 反射技术
- 直接插入排序
- 仿专题订阅功能
- java二维数组详解
- net中序列化读写xml
- 《算法竞赛入门经典》4.13应用举例-孪生素数
- 牛刀小试(03)——透镜扫描(网易2016研发工程师编程题)
- OSSIM主要数据库表结构
- 航电OJ-2544最短路
- js中字符串,数字之间转换的常用方法
- 对移动医疗浅陋的理解
- 如果把表单数据的校验交给了javascript那么后台还有没有必要对数据做校验呢
- 广商14级软件工程分数:第一回合
- Maven项目管理:SpringMVC+Mybatis+Velocity整合笔记
- ubuntu14.04无法安装Curl
- Android事件传递机制(一)
- HDU1978 记忆化搜索
- R语言实现常用算法
- LCP Array(思维)