【发布时间】:2019-05-12 03:01:09
【问题描述】:
尝试合并来自 LeetCode 的两个排序列表问题,一直遇到未定义的结果:
/**
* 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 res = new ListNode();
var curr = res;
while(l1 !== null && l2 !== null) {
if(l1.val <= l2.val) {
// Set current node to l1 if less than or equal
curr = l1;
// Move l1's head to next
l1 = l1.next
} else {
// Else same case for l2
curr = l2;
l2 = l2.next;
}
// Move current to next
curr = curr.next
}
if (l1 !== null) {
curr = l1;
} else if (l2 !== null) {
curr = l2;
}
return res;
};
不确定 res 为何返回 undefined。据我所知,我将 res 设置为生成的链表节点的 head 指针并执行以下逻辑:
当L1 或L2 未到达终点时,比较值。
如果L1.val 小于等于L2.val,则将其设置为当前节点,然后向上提升指针L1 到下一个值。
ELSE 为L2 做镜像。
设置当前节点值后,将节点提升到下一项(L1.next 或 L2.next,将被任一列表中的下一个较大值覆盖)并重复。
一旦到达L1 或L2 的末尾,将剩余的链表设置为当前节点,然后返回完整链表的头部res 指针。
不知道我的逻辑哪里出错了,也许有点晚了哈哈。如果再次出现这种情况,我们深表歉意,感谢您的帮助!
【问题讨论】: