就爱瞎逛 2019-09-09 10:32 采纳率: 83.3%
浏览 249
已采纳

leetcode876. 链表的中间结点。用javascript,为什么return是undefined?

题目来源https://leetcode-cn.com/problems/middle-of-the-linked-list
问题①:按这个思路“将链表输出到数组,数组的话可以按索引找“来写的

var middleNode = function(head) {
    let result = [head];
    for(let i = 0, apple = head; apple != null; i++, apple = apple.next){
        result[i] = apple.val;
    }
    console.log(result);
    console.log(result.length);
    console.log (result.slice(Math.floor(result.length/2)));
    return Array.from(result);
}

图片说明

为什么console能正常显示但是return却不行?

问题②:用快慢双指针

var middleNode = function(head) {
    slow = fast = head;
    while(fast && fast.next != null){ //为什么去掉fast 就会报错???
        // console.log(slow.val +" "+fast.val);
        slow = slow.next;
        fast = fast.next.next;
    }
    return slow;
}

去掉fast会报错,但不懂为什么

测试用例:[1,2,3,4,5,6]
图片说明

感谢大佬们在百忙中解答我的疑问!!

  • 写回答

1条回答 默认 最新

  • 「已注销」 2019-09-09 13:23
    关注

    你好我去看了下这道题 有下面这段注释

    /**
     * @param {ListNode} head
     * @return {ListNode}
     */
    

    第一个问题:需要你返回一个列表 而不是一个数组

    第二个问题:最后一个节点时fast会为null 所以fast无next属性

    另外老哥你是写Python的吧。。 变量啥的还是声明下比较好

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?