/**
* Definition for singly-linked list.
* function ListNode(val) {
* this.val = val;
* this.next = null;
* }
*/
/**
* @param {ListNode} l1
* @param {ListNode} l2
* @return {ListNode}
*/
function ListNode(val) {
this.val = val;
this.next = null;
}
var mergeTwoLists = function (l1, l2) {
var node = new ListNode();
console.log(node)
var ret=node;
console.log(ret)
while (l1 != null || l2 != null) {
if(l1!=null&&l2!=null){
if(l1.val<=l2.val){
node.next=l1;
l1=l1.next;
}else if(l1.val>l2.val){
node.next=l2;
l2=l2.next;
}
node=node.next;
}else if(l1!=null){
node.next=l1;
break;
}
else{
node.next=l2;
break;
}
console.log(node)
}
console.log(ret.next)
return ret.next;
};
控制檯的console.log輸出:
ListNode { val: undefined, next: null }
ListNode { val: undefined, next: null }
ListNode {val: 1,next: ListNode { val: 2, next: ListNode { val: 4, next: null } } }
ListNode {val: 1,next: ListNode { val: 3, next: ListNode { val: 4, next: null } } }
ListNode { val: 2, next: ListNode { val: 4, next: null } }
ListNode { val: 3, next: ListNode { val: 4, next: null } }
ListNode { val: 4, next: null }
ListNode {val: 1,next:ListNode { val: 1, next: ListNode { val: 2, next: [ListNode] } } }
相當於是一步步的迭代