010_删除链表的倒数第N个节点

知识点:双指针(快慢指针)、链表

LeetCode第十九题:

语言:GoLang

/**
 * 问题一:n是否能够为零,即head是否可以为nil
 */
func removeNthFromEnd(head *ListNode, n int) *ListNode {
    slow, fast := head, head

    for i := 0; i < n; i++ {
        fast = fast.Next
    }

    pre := slow
    for fast != nil {
        pre = slow
        slow = slow.Next
        fast = fast.Next
    }

    if pre == slow {
        return head.Next
    }else {
        pre.Next = pre.Next.Next
    }

    return head
}
posted @ 2020-03-07 09:29  Cenyol  阅读(71)  评论(0)    收藏  举报