卡在 Leetcode 19 问题 "Remove Nth Node From End of List"



我在 let 上发生错误forwardNode = currentNode.next.next错误是"类型错误:无法读取 null 的"下一个"的属性。但是当我控制台时.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
};

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

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

相关内容

  • 没有找到相关文章

最新更新