合并两个有序的链表
2017-02-21 10:48
232 查看
题目描述
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。思路:递归和非递归两种。
递归很好理解:每次取list1,或者list2中的小的那个。public ListNode Merge(ListNode list1,ListNode list2) {
if(list1 == null){
return list2;
}
if(list2 == null){
return list1;
}
if(list1.val <= list2.val){
list1.next = Merge(list1.next, list2);
return list1;
}else{
list2.next = Merge(list1, list2.next);
return list2;
}
}非递归的步骤如下:
public class Solution {
public ListNode Merge(ListNode list1,ListNode list2) {
//新建一个头节点,用来存合并的链表。
ListNode head=new ListNode(-1);
head.next=null;
ListNode root=head;
while(list1!=null&&list2!=null){
if(list1.val<list2.val){
head.next=list1;
head=list1;
list1=list1.next;
}else{
head.next=list2;
head=list2;
list2=list2.next;
}
}
//把未结束的链表连接到合并后的链表尾部
if(list1!=null){
head.next=list1;
}
if(list2!=null){
head.next=list2;
}
return root.next;
}
}
相关文章推荐
- 两个有序链表序列的合并
- 递归实现合并两个有序链表成一个链表依然有序
- 5,两个不交叉的有序链表的合并
- 将两个有序链表合并为一个有序链表
- 合并两个有序链表
- 合并两个有序链表,让结果ren仍然有序
- 用递归方法实现两个链表head1和head2各自有序,请把它们合并成一个链表仍然有序。(c/c++)
- 合并两个有序链表
- 实现两个有序链表的合并
- 合并两个有序的链表新的链表也要有序
- [PTA] 线性结构1 两个有序链表序列的合并(15 分)
- 两个有序链表合并为一个链表
- 02-线性结构1 两个有序链表序列的合并 (15分)
- 合并两个有序链表的算法
- 将两个非递减的有序链表合并为一个非递增的有序链表(C语言编程实现)
- 将两个有序链表合并成一个有序链表——搜狐畅游笔试题归来
- 每天一道LeetCode-----合并两个/多个有序链表为一个新链表
- 将两个非递减的有序链表合并为一个非递增的有序链表
- 合并两个有序的单链表
- 02-线性结构1 两个有序链表序列的合并 (15分)