将两个有序(升序)链表合并为一个新的有序(升序)链表。
样例
给出 1->3->8->11->15->null,2->null, 返回 1->2->3->8->11->15->null。
Merge two sorted (ascending) linked lists and return it as a new sorted list. The new sorted list should be made by splicing together the nodes of the two lists and sorted in ascending order.
Example
Given 1->3->8->11->15->null, 2->null , return 1->2->3->8->11->15->null.
/**
* Definition for ListNode.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int val) {
* this.val = val;
* this.next = null;
* }
* }
*/
public class Solution {
/**
* @param ListNode l1 is the head of the linked list
* @param ListNode l2 is the head of the linked list
* @return: ListNode head of linked list
*/
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
ListNode l = new ListNode(Integer.MIN_VALUE);
ListNode p1 = l1, p2 = l2, p3 = l;
while(p1 != null && p2 != null) {
if(p1.val < p2.val) {
p3.next = p1;
p1 = p1.next;
}else if (p1.val > p2.val) {
p3.next = p2;
p2 = p2.next;
}else {
p3.next = p1;
p1 = p1.next;
p3 = p3.next;
p3.next = p2;
p2 = p2.next;
}
p3 = p3.next;
}
p3.next = (null == p1 ? p2 : p1);
return l.next;
}
}