【问题标题】:Stuck on Leetcode 19 Question "Remove Nth Node From End of List"卡在 Leetcode 19 问题“从列表末尾删除第 N 个节点”
【发布时间】:2019-09-14 23:13:37
【问题描述】:

我在 let forwardNode = currentNode.next.next 上发生错误,错误是“TypeError: Cannot read property on 'next' of null. 但是当我 console.log currentNode.next 它不为空。

然后我将let forwardNode = currentNode.next.next 分解为:

let forwardNode = currentNode.next 
let forward = forwardNode.next 
currentNode = forward 

但我得到了同样的错误。我被困住了!我不知道我在这里俯瞰什么。这是我的代码:

/**
 * Definition for singly-linked list.
 * function ListNode(val) {
 *     this.val = val;
 *     this.next = null;
 * }
 */
/**
 * @param {ListNode} head
 * @param {number} n
 * @return {ListNode}
 */


var removeNthFromEnd = function(head, n) {
    let currentNode = head
    let currentIndex = 0 

    while (currentNode.next != null  ) {
        currentNode = currentNode.next 
        currentIndex++
    }

    //length of LL is known by currentIndex
    //reset currentnode 


    currentNode = head

    for (let i = 0; i<currentIndex-n; i++){
        currentNode = currentNode.next
    }

    let forwardNode = currentNode.next.next 
    currentNode.next = forwardNode 


    return head
};

【问题讨论】:

    标签: javascript linked-list runtime-error


    【解决方案1】:

    此时代码中,currentNode 后面只有 n 节点。如果n0,则currentNode.next 不存在,因此.next.next 根本不起作用。如果n 不为 0,您只想执行整个代码。

    【讨论】:

    • 我添加了另一个指针,如果 n 等于 0,则该指针的下一个值设置为 null,但我仍然遇到相同的错误。
    • 这是修改后的版本,但还是一样的错误。 repl.it/repls/PromotedRecentFilesize
    【解决方案2】:

    如果要删除的节点是距最后一个节点或距最后一个节点的第一个节点,则此代码将不起作用。您需要明确处理这些用例。因为 current.next 在一种情况下可能为 null,而 current.next.next 在另一种情况下也可能为 null。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-28
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多