题目:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
分析:此题分为递归和非递归
非递归版本:
public class Solution {
public ListNode Merge(ListNode list1,ListNode list2) {
ListNode result = null;
ListNode head = null;
if(list1==null){return list2;}
if(list2==null){return list1;}
while(list1!=null&&list2!=null){
if(list1.val<=list2.val){
if(head==null){head=result=list1;}
else if(head!=null){result.next=list1;result=result.next;}
list1=list1.next;
}
else{
if(head==null){head=result=list2;}
else if(head!=null){result.next=list2;result=result.next;}
list2=list2.next;
}
}
if(list1==null){result.next=list2;}
if(list2==null){result.next=list1;}
return head;
}
}
递归版本:
public class Solution {
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;
}
}
}