BM9 删除链表的倒数第n个节点
题目描述
思路分析
把两个指针想象成两个小孩,比如我们要找到倒数第3个,共10个,先让fast跑3步,此时再与slow同时开始跑,
当fast跑到10时,slow就刚好跑到8,也就是倒数第三个。
代码参考
// 可以借助之前,追击的问题,借助返回倒数第k个节点的题的基础上
function removeNthFromEnd( head , n ) {
// write code
let node = new ListNode(-1)
node.next = head
let pre = node
// 初始化fast和slow都指向head
let fast = slow = head
for(let i = 0; i < n; i++) {
if(fast===null) return null
fast = fast.next
}
// 此时让fast和slow同时跑
while(fast){
fast = fast.next
slow = slow.next
pre = pre.next
}
// 假设链表的长度足够时,那么此时slow的后面还有节点,slow是我们要删除的节点
pre.next = slow.next
slow.next = null
return node.next
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理