申明:本文只用做自己的学习记录
题目给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点
示例 1:
输入:head = [1,2,3,4,5], n = 2
示例 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 个结点所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)