当前位置: 首页 > news >正文

力扣面试150(51/100)

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

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

我的思路:三个指针:pre , cur , next

进行遍历吧,在n - 1的时候要保存pre指针,cur = pre.next next = cur.next

然后pre.next = next cur.next = null

!!!!

是倒数第几个->整数len - n 个,那就先得到总的长度len ,然后遍历找到对应的删除位置,最后进行删除

注意啦!虚拟头节点的使用:代码简洁,不需要考虑删除的什么类型的节点

情况不使用虚拟头节点使用虚拟头节点
删除头节点需要单独判断 if (n === count)直接 pre.next = pre.next.next
删除中间节点正常遍历到前一个节点正常遍历到前一个节点
删除尾节点正常遍历到前一个节点正常遍历到前一个节点
代码复杂度需要额外条件判断逻辑统一,更简洁

我的代码:

var removeNthFromEnd = function(head, n) {const dummy = new ListNode();//使用虚拟头节点,让删除头节点也变得普通dummy.next = head;let cur = head;let count  = 0 ;while(cur){count++;cur = cur.next;}cur = dummy;for(let i = 0 ; i < count - n ; i++){cur = cur.next;}cur.next = cur.next.next;return dummy.next;};

总结:

这段代码通过引入虚拟头节点来统一处理链表删除操作,避免了单独判断删除头节点的特殊情况。首先遍历链表计算总长度,然后根据长度和目标位置找到要删除节点的前驱节点,最后通过修改指针完成删除。虚拟头节点的使用让代码逻辑更简洁,无论删除的是头节点、中间节点还是尾节点,都能用同一种方式处理,增强了代码的健壮性和可读性。

http://www.xdnf.cn/news/1266715.html

相关文章:

  • Prometheus监控平台部署与应用
  • rotary_emb 位置编码 加速
  • 书生浦语第五期-L1G4-InternLM 论文分类微调实践(XTuner 版)
  • 大模型在垂直场景的创新应用:搜索、推荐、营销与客服新玩法
  • 笔试——Day33
  • 基于深度强化学习的Atari中的SpaceInvaders
  • Effective C++ 条款31: 将文件间的编译依存关系降至最低
  • AI 大模型企业级应用落地挑战与解决方案
  • [Oracle] MAX()和MIN()函数
  • QT第一讲- Qt初探
  • 轻量化阅读应用实践:21MB无广告电子书阅读器测评
  • 政府数字化大屏系统 - Flask实现方案
  • 6.6 ASPICE验证过程的缺陷管理
  • ESP32之wifi_HTTP
  • Linux-JSON Schema
  • 大模型SSE流式输出技术
  • 【Python 高频 API 速学 ③】
  • 信息安全及防火墙总结
  • 【排序算法】②希尔排序
  • 束搜索(Beam Search):原理、演进与挑战
  • AI鉴伪技术:守护数字时代的真实性防线
  • PromptPilot打造高效AI提示词
  • llama-factory代码详解(一)--model_args.py
  • C++实现MATLAB矩阵计算程序
  • 【传奇开心果系列】Flet框架实现的功能丰富设计现代化的管理仪表盘组件自定义模板
  • 掌握长尾关键词SEO优化技巧
  • Redis 持久化策略深度剖析:从原理到实战,守护数据不丢失
  • axios 发请求
  • 制作浏览器CEFSharp133+X86+win7 之 javascript交互(二)
  • C++-AVL树