题目描述
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
解题思路
1.新建一个链表用来存储合成后的链表。
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode Merge(ListNode list1,ListNode list2) {
if(list1==null) //特殊情况
return list2;
if(list2==null)
return list1;
ListNode list = null;
ListNode temp = null;
while(list1!=null&&list2!=null)
{
if(list1.val<list2.val){ //list1小于list2,合并list1的一项
if(list==null) //头结点特殊对待
list = temp = list1;
else{
temp.next = list1;
temp = temp.next;
}
list1=list1.next;
}
else{ //list2小于等于list1,合并list2的一项
if(list == null)
list = temp =list2;
else{
temp.next = list2;
temp = temp.next;
}
list2 = list2.next;
}
}
if(list1!=null) //list1或list2合并完后还有剩余,直接加到尾部
temp.next = list1;
if(list2!=null)
temp.next = list2;
return list;
}
}
2.采用递归的方法。
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode Merge(ListNode list1,ListNode list2) {
if(list1==null)
return list2;
if(list2==null)
return list1;
ListNode list=null;
if(list1.val<list2.val)
{
list = list1;
list.next = Merge(list1.next,list2);
}
else
{
list = list2;
list.next = Merge(list1,list2.next);
}
return list;
}
}