前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >19. 删除链表的倒数第N个节点

19. 删除链表的倒数第N个节点

原创
作者头像
Michel_Rolle
修改2021-03-01 14:45:40
2.2K0
修改2021-03-01 14:45:40
举报
文章被收录于专栏:LeetCode解题

19. 删除链表的倒数第N个节点

链接

给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。

示例1

代码语言:txt
复制
给定一个链表: 1->2->3->4->5, 和 n = 2.

当删除了倒数第二个节点后,链表变为 1->2->3->5.

解题思路

设置两个指针变量,中间隔N-1个元素,当后面的指针遍历完所有元素指向nil时,前面的指针就指向了想要删除的元素

代码语言:txt
复制
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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 19. 删除链表的倒数第N个节点
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档