合并两个有序链表(js递归解法)问题

一、问题发现

在力扣刷题时,官方递归解法中不知道哪一步会返回合成链表的表头(每一个链表表头都在遍历对应链表下一个节点):

合并两个有序链表(js递归解法)问题_第1张图片

二、问题解决

我对代码进行了测试:

求[1,4,5],[2,3,4,6]合并链表

在每次return前都输出当前return结果(再给输出结果加上标识1和2)

①未加标识结果:

合并两个有序链表(js递归解法)问题_第2张图片

②加标识结果:

合并两个有序链表(js递归解法)问题_第3张图片

解释:(console.log存在栈中,后进先出,即先执行最近的console.log语句)最后判断出随着链表表头不断向后面节点遍历,l1,l2指向改变,但是在第一次调用mergeTwoLists函数时,return l1保留了l1地址,指向链表1的头结点。

三、完整代码

function ListNode(val,next){
    this.val = (val===undefined)?0:val;
    this.next = (next===undefined)?null:next;
}

function linkList(arr){
    let head = new ListNode(-1);
    let list = head;
    for(let i = 0;i

你可能感兴趣的:(答疑解惑,javascript,算法)