【问题标题】:Why is my reversed linked list returning null value?为什么我的反向链表返回空值?
【发布时间】:2021-05-28 04:19:29
【问题描述】:

这是我对 leetcode 编号 234 的答案,它实际上与我找到的每个 js 答案一字不差。但是它说我的反向慢节点没有价值,这是为什么呢?我看不出问题出在哪里。

var isPalindrome = function(head) {
    
    let fast = head;
    let slow = head;
    
    while(fast !== null && fast.next.next !==null){
        fast = fast.next.next;
        slow = slow.next;
    }
    
    fast = head;
    slow = reverse(slow);
    
    while(slow !== null){
        if(fast.val !== slow.val){
            return false;
        }
        fast = fast.next;
        slow = slow.next;
    }
    
    return true;
    
};

let reverse = function(head){
    let prev = null;

    while(head !== null){
        let temp = head.next;
        head.next = prev;
        prev = head;
        head = temp;
    }

    return prev
}

【问题讨论】:

  • 您的问题是什么?而且,如何测试它,您的预期输出是什么。
  • 将代码放入leetcode.com/problems/palindrome-linked-list 应该结果为真。这是一个有效答案的示例terriblewhiteboard.com/palindrome-linkedlist-leetcode-234,如果粘贴到编辑器中就可以工作。我看不出我和这个答案之间的区别。
  • @Someone_who_likes_SE,不知道你指的是什么。 prev 是本地的。 (此外,将windowglobalThis 混合使用是没有意义的。window 是特定于浏览器代理的。)为什么您将评论格式化为代码?

标签: javascript linked-list


【解决方案1】:

希望您在提交代码之前在控制台中调试您的问题。

如果不是,那么让我告诉您,在通过两个指针遍历 ListNode 时,您的代码中有一个小错误。

您正在检查i-th 节点和i+2-th 节点,您需要检查i-th 节点和i+1-th 节点,在遍历节点时删除fast.next.next

 while(fast !== null && fast.next!==null){
    fast = fast.next.next;
    slow = slow.next;
}

其余的一切都很好,需要继续努力。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多