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.
Example:
Input: 1->2->4, 1->3->4
Output: 1->1->2->3->4->4
Keep tracking the head of two lists and keep moving the pointer of smaller one to the next node.
/**
* Definition for singly-linked list.
* function ListNode(val) {
* this.val = val;
* this.next = null;
* }
*/
/**
* @param {ListNode} l1
* @param {ListNode} l2
* @return {ListNode}
*/
let mergeTwoLists = function(l1, l2) {
let prehead = { next: null }
let p = prehead
let p1 = l1
let p2 = l2
while (p1 && p2) {
let pSel
if (p1.val < p2.val) {
pSel = p1
p1 = p1.next
} else {
pSel = p2
p2 = p2.next
}
p.next = pSel
p = pSel
}
p.next = p1 || p2
return prehead.next
};