问题描述:
思路:简单的两个有序链表的排列,可以有两个方法
一个就是直接排,通过新建一个链表来存储每个值
public static ListNode Merge(ListNode list1,ListNode list2) {
ListNode sum=new ListNode(-1);
ListNode node=sum;
ListNode a1=list1;
ListNode a2=list2;
while (a1!=null&&a2!=null){
if (a1.val<=a2.val){
ListNode listNode=new ListNode(a1.val);
node.next=listNode;
node=node.next;
a1=a1.next;
}else {
ListNode listNode=new ListNode(a2.val);
node.next=listNode;
node=node.next;
a2=a2.next;
}
}
//改:这里可以用表达式 node.next=a1!=null?a1:a2;
if(a1!=null){
node.next=a1;
}
if (a2!=null){
node.next=a2;
}
return sum.next;
}
第二中就是通过递归,相比直接写,运行时间要长几ms。但是节省了内存空间
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;
}
if(list2.val<list1.val){
list2.next=Merge(list1,list2.next);
return list2;
}
return null;
}