关于golang:Leetcode专题链表19删除链表的倒数第-N-个结点

力扣链接:
https://leetcode-cn.com/probl…
解题思路:

  1. 申明虚构头节点,简化链表操作,使得所有的节点操作统一
  2. 删除倒数第N个节点,能够应用快慢指针,快指针先走,慢指针再走,这样快指针到链表最初一个蒜素的时候,能够应用慢指针删除倒数第N个节点
  3. 这里须要留神,快指针先走N+1步,使得慢指针正好停在待删除的元素前一个元素,不便删除
func removeNthFromEnd(head *ListNode, n int) *ListNode {
    dummyHead := &ListNode{}
    slow, fast := dummyHead, dummyHead
    dummyHead.Next = head
    for n >=0 && fast != nil { // 多走一步,正好使得slow指针停在待删除的指针上一个地位
        fast = fast.Next
        n--
    }
    for fast != nil {
        fast = fast.Next
        slow = slow.Next
    }
    slow.Next = slow.Next.Next
    return dummyHead.Next
}

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理