问题:将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
例如:输入l1[1,2,3] l2[3,4,5]
输出[1,2,3,3,4,5]
思路:首先要考虑两个表为空的情况,再考虑两个表各自为空的情况。若表A为空则输出表B,若表B为空则输出表A。当两个表都不为空如下图,若走到最后两个表有一个地址为空了则,tmp指向另一个表当前地址。
代码:
public ListNode mergeTwoLists(ListNode headA, ListNode headB) {
if(headA==null){return headB;}
if(headB==null){return headA;}
if((headA==null&&headB==null)){
return null;
}
ListNode newhead=new ListNode(-1);//题目给定-1
ListNode tmp=newhead;
while(headA!=null&&headB!=null){
if(headA.val<headB.val){
tmp.next=headA;
headA=headA.next;
}else{
tmp.next=headB;
headB=headB.next;
}
tmp=tmp.next;
}
if(headA==null){
tmp.next=headB;
}
else if(headB==null){
tmp.next=headA;
}
return newhead.next;
}