删除链表倒数第n个节点

https://leetcode.cn/problems/SLwz0R/
/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */ func removeNthFromEnd(head *ListNode, n int) *ListNode { //return twoPoint(head,n) return rev(head,n) //return revPlus(head,n) } //一、计算链表长度 // 1.计算链表长度 // 2.增加一个哑节点,遍历到倒数n+1的位置 func rev(head *ListNode,n int) *ListNode{ k:=0 tmp:=head now:=&ListNode{ Next:head, } for tmp!=nil{ k++ tmp=tmp.Next } cur:=now for i:=0;i<k-n;i++{ cur=cur.Next } cur.Next=cur.Next.Next return now.Next } //二、数组定位倒数第n个节点 // 1.存储所有节点 // 2.倒数n+1的节点就是nodes[len(nodes)-1-n] func revPlus(head *ListNode,n int) *ListNode{ now:=&ListNode{ Next:head, } var nums []*ListNode for tmp:=now;tmp!=nil;tmp=tmp.Next{ nums=append(nums,tmp) } pre:=nums[len(nums)-1-n] pre.Next=pre.Next.Next return now.Next } //三、双指针 // 1.两个指针,步伐相同 // 2.快指针先移动n步 // 3.两个指针一起移动,直到快指针为nil // 4.此时慢指针就是倒数n位置 func twoPoint(head *ListNode,n int) *ListNode{ first:=head now:=&ListNode{ Next:head, } second:=now for i:=0;i<n;i++{ first=first.Next } for first!=nil{ first=first.Next second=second.Next } second.Next=second.Next.Next return now.Next }
等风起的那一天,我已准备好一切
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
2020-06-29 shell编程--awk 、sed 命令介绍
2020-06-29 shell编程----函数、数组