删除单项链表倒数第n个节点 (双指针法)
type ListNode struct {
Val int
Next *ListNode
}
func removeNthFromEnd(head *ListNode, n int) *ListNode {
dummy := &ListNode{
Val: -1,
Next: head,
}
slowNode := dummy //慢指针
fastNode := head //快指针
//快指针先向前移动n位
count := 0
for fastNode!= nil && count != n{
count++
fastNode = fastNode.Next
}
for fastNode != nil {
slowNode = slowNode.Next
fastNode = fastNode.Next
}
slowNode.Next = slowNode.Next.Next
return dummy.Next
}