给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
示例1
给定一个链表: 1->2->3->4->5, 和 n = 2.
当删除了倒数第二个节点后,链表变为 1->2->3->5.
解题思路
设置两个指针变量,中间隔N-1个元素,当后面的指针遍历完所有元素指向nil时,前面的指针就指向了想要删除的元素
type ListNode struct {
Val int
Next *ListNode
}
func removeNthFromEnd(head *ListNode, n int) *ListNode {
slow, fast := head, head
for n != 0 {
fast = fast.Next
n--
}
if fast == nil {
return head.Next
}
for fast.Next != nil {
fast = fast.Next
slow = slow.Next
}
// 最后一个节点指为空,然后返回head
slow.Next = slow.Next.Next
return head
}
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。