首页 > 解决方案 > 为什么我的反向链表返回空值?

问题描述

这是我对 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
}

标签: javascriptlinked-list

解决方案


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

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

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

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

其余的事情都很好,需要工作。


推荐阅读