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.
使用兩個指針,比較第一個鏈表和第二個鏈表的元素,如果第二個鏈表的元素大于第一個的,就把第一個指針后移。否則就將第二個指針所指的元素插在第一個指針的前面。這樣做不需要一個新的鏈表來儲存,也比較快。
/**
* Definition for singly-linked list.
* function ListNode(val) {
* this.val = val;
* this.next = null;
* }
*/
/**
* @param {ListNode} l1
* @param {ListNode} l2
* @return {ListNode}
*/
var mergeTwoLists = function(l1, l2) {
var pointer1 = l1;
var pointer2 = l2;
while (pointer1!==null&&pointer2!==null) {
if (pointer1.val<=pointer2.val) {
if (pointer1.next===null) {
pointer1.next = pointer2;
return l1;
}
pointer1 = pointer1.next;
} else {
var temp = new ListNode(pointer1.val);
temp.next = pointer1.next;
pointer1.val = pointer2.val;
pointer1.next = temp;
pointer2 = pointer2.next;
}
if (pointer2===null) {
return l1;
}
}
return l1 ? l1 : l2;
};