很简单的题,我给想复杂了。无语子。还漏看了l2为null时会导致错误。
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
if(l1==null&&l2!=null) return l2;
if(l2==null&&l1!=null) return l1;
if(l1==null&&l2==null) return null;
ListNode tmp1,tmp2,pre;
if(l1.val>l2.val){
tmp1=l2;
l2=l1;
l1=tmp1;
}
ListNode head=l1;
pre=head;
while(l1!=null){
if(l1.val<=l2.val){
pre=l1;
l1=l1.next;
}
else{
tmp2=l2.next;//可能为null别忘记处理
pre.next=l2;
l2.next=l1;
pre=pre.next;
l2=tmp2;
if(l2==null)//各位注意为null的处理,不处理下一次可能会访问这个空指针
break;
}
}
if(l2!=null)
pre.next=l2;
return head;
}
}