Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.
//递归解法
public ListNode mergeTwoLists2(ListNode l1, ListNode l2) {
if(l1==null) return l2;
if(l2==null) return l1;
ListNode head;
if(l1.val<l2.val) {
head = l1;
head.next = mergeTwoLists(l1.next, l2);
} else {
head = l2;
head.next = mergeTwoLists(l1, l2.next);
}
return head;
}
//非递归
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
//头节点
ListNode head = new ListNode(0);
//进行指针移动
ListNode p = head;
while(l1!=null && l2!=null) {
if(l1.val<l2.val) {
p.next=l1;
l1=l1.next;
} else {
p.next=l2;
l2=l2.next;
}
p=p.next;
}
if(l1!=null){
p.next=l1;
}
if(l2!=null) {
p.next=l2;
}
return head.next;
}