LintCodeは2つのソートチェーンテーブルを結合します
2つの順序付き(昇順)チェーンテーブルを新しい順序付き(昇順)チェーンテーブルに結合します.サンプルは、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.
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;
}
}