LeadCode19. 删除链表的倒数第N个结点
1. 问题描述
2. 思路
slow
和fast
指针都指向head
fast
指针先向前走n步slow
和fast
指针同时向前走,直到fast
指针指向最后一个节点(fast.Next == nil
),此时slow
指针指向倒数第n+1
个节点- 删除
slow.Next
节点,即slow.Next = slow.Next.Next
3. 代码
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func removeNthFromEnd(head *ListNode, n int) *ListNode {
slow, fast := head, head
for i := 0; i < n; i++ {
fast = fast.Next
}
if fast == nil {
return head.Next
}
for fast.Next != nil {
slow = slow.Next
fast = fast.Next
}
slow.Next = slow.Next.Next
return head
}