13.删除链表的倒数第n个节点

思路

快慢指针,先拉开差距n,再继续同时前进

package main

type ListNode struct {
	Val  int
	Next *ListNode
}

// @solution-sync:begin
func removeNthFromEnd(head *ListNode, n int) *ListNode {
	result := &ListNode{ Next: head}
	s, f := result, result
	i := 0
	for f.Next != nil {
		if i < n {
			f = f.Next
			i++
		} else {
			s = s.Next
			f = f.Next
		}
	}
	s.Next = s.Next.Next

	return result.Next
}

Last updated