ListNode结构:
解法1
public class Solution {
public ListNode Merge(ListNode list1,ListNode list2) {
ListNode res=new ListNode(-1);
res.next=null;
ListNode root=res;
while(list1!=null&&list2!=null){
if(list1.val>list2.val){
res.next=new ListNode(list2.val);
list2=list2.next;
}else{
res.next=new ListNode(list1.val);
list1=list1.next;
}
res=res.next;
}
while(list1!=null){
res.next=new ListNode(list1.val);
res=res.next;
list1=list1.next;
}
while(list2!=null){
res.next=new ListNode(list2.val);
res=res.next;
list2=list2.next;
}
return root.next;
}
}
解法2
public class Solution {
public ListNode Merge(ListNode list1,ListNode list2) {
ListNode res=new ListNode(-1);
res.next=null;
ListNode root=res;
while(list1!=null&&list2!=null){
if(list1.val>list2.val){
res.next=list2;
res=list2;
list2=list2.next;
}else{
res.next=list1;
res=list1;
list1=list1.next;
}
}
if(list1!=null){
res.next=list1;
}
if(list2!=null){
res.next=list2;
}
return root.next;
}
}
解法1和解法2的差别:
解法3
public class Solution {
public ListNode Merge(ListNode list1,ListNode list2) {
if(list1==null){
return list2;
}else if(list2==null){
return list1;
}
ListNode pMergeHead = null;
if(list1.val<list2.val){
pMergeHead = list1;
pMergeHead.next = Merge(list1.next,list2);
}else{
pMergeHead = list2;
pMergeHead.next = Merge(list1,list2.next);
}
return pMergeHead;
}
}