根据你提供的代码,有一个地方是错误的。在第二个for循环中,应该将条件改为fastPtr != nil
而不是fastPtr.Next != nil
。这是因为我们要找到倒数第N+1个节点,所以快指针(fastPtr)需要移动N+1次才能到达目标位置。
以下是修改后的代码:
func removeNthFromEnd(head *ListNode, n int) *ListNode {
// 删除第 N 个节点,需要找到倒数第 N+1 个节点
length := 0
newHead := &ListNode{}
newHead.Next = head
curNode := newHead
for curNode != nil {
length++
curNode = curNode.Next
}
fastPtr := newHead
slowPtr := newHead
for i := 0; i < length - n - 1; i++ {
fastPtr = fastPtr.Next
}
for fastPtr != nil {
fastPtr = fastPtr.Next
slowPtr = slowPtr.Next
}
slowPtr.Next = slowPtr.Next.Next
return newHead.Next
}
希望对你有帮助!
内容由零声教学AI助手提供,问题来源于学员提问