go语言刷题:19. 删除链表的倒数第 N 个结点

go语言刷题:19. 删除链表的倒数第 N 个结点,第1张

概述申明:本文只用做自己的学习记录题目给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点示例1:输入:head=[1,2,3,4,5],n=2输出:[1,2,3,5]示例2:输入:head=[1],n=1输出:[]示例3:输入:head=[1,2],n=1输出:[1]代码typeListNodestruct{ Valin

申明:本文只用做自己的学习记录

题目

给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点
示例 1:

输入:head = [1,2,3,4,5], n = 2

输出:[1,2,3,5]
示例 2:

输入:head = [1], n = 1
输出:[]
示例 3:

输入:head = [1,2], n = 1
输出:[1]

代码
type ListNode struct {	Val  int	Next *ListNode}func removeNthFromEnd(head *ListNode, n int) *ListNode {	//本题采用双指针,指针1和指针2的间隔为n+1	//判断边界条件	if head.Next == nil {		return nil	}	//创建新的表头	dummy := &ListNode{0, head}	//创建指针	temp := dummy	//创建两个指针	//指针1	firstNode := temp.Next	//遍历到指针2的位置	for i := 0; i <= n; i++ {		//如果在遍历指针2的时候出现下一节点为空的情况,说明n的数值大小等于链表长度		//则删除链表第一个节点就好		if temp.Next == nil {			dummy.Next = dummy.Next.Next			return dummy.Next		}		temp = temp.Next	}	//指针2	secondNode := temp	//遍历链表直至指针2的子节点为nil,说明已经到链表尾部了	for secondNode.Next != nil {		//指针1后移		firstNode = firstNode.Next		//指针2后移		secondNode = secondNode.Next	}	//删除该节点后一位节点	firstNode.Next = firstNode.Next.Next	//返回头节点	return dummy.Next}
总结

以上是内存溢出为你收集整理的go语言刷题:19. 删除链表的倒数第 N 个结点全部内容,希望文章能够帮你解决go语言刷题:19. 删除链表的倒数第 N 个结点所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1244358.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存