剑指 Offer II 021. 删除链表的倒数第 n 个结点

67 阅读1分钟

题目:
给定一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。
解法:

func removeNthFromEnd(head *ListNode, n int) *ListNode {
    preTarget := &ListNode{Next:head}
    dymmy := preTarget
    target := head
    node := head
    distance := 1
    for node != nil && node.Next != nil {
        if distance == n {
            target = target.Next
            preTarget = preTarget.Next
        } else {
            distance ++
        }
        node = node.Next
    }

    preTarget.Next = target.Next


    return dymmy.Next
}