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

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

题目

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

代码

法一、栈

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:stack<ListNode*> st;ListNode* removeNthFromEnd(ListNode* head, int n) {ListNode* p = head;while(p) {st.push(p);p = p->next;}int x = 0;while(!st.empty()) {x++;if (x == n) {ListNode* t = st.top();st.pop();if (!st.empty()) { // 还有,证明要删除的不是第一个结点ListNode* l = st.top();l->next = t->next;delete t;return head;} else {return head->next;}}st.pop();}return nullptr;}
};

法二、递归

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
private:int x = 0; // 记录倒数第几个结点int n;void solve(ListNode* l, ListNode* p) {if (!p) {return ;}solve(p, p->next);x++;if (x == n) {l->next = p->next;delete p;}}
public:ListNode* removeNthFromEnd(ListNode* head, int n) {this->n = n;ListNode* fake = new ListNode();fake->next = head;ListNode* p = fake;solve(nullptr, p);return fake->next;}
};
http://www.jsqmd.com/news/549829/

相关文章:

  • Zynq7000开发实战:PS端GPIO初始化函数XGpioPs_LookupConfig()和XGpioPs_CfgInitialize()避坑指南
  • mrm-mot2x50电机驱动CAN通信库详解
  • 给硬件工程师的避坑指南:从AEC-Q100到ISO 16750,你的车规产品认证路线图
  • Mac Mouse Fix 深度技术解析:从系统事件拦截到手势映射的实现原理
  • 2026年频闪测试仪品牌推荐:北京先锋泰坦科技光谱亮度计/薄膜厚度测量仪等18类仪器全解析 - 品牌推荐官
  • 智能客服监控系统:构建AI值守的可靠性基石
  • windows+ubuntu 双系统(or三系统)
  • 非专业的力量:岐金兰与AI元人文的生成之路——人机协作时代的思想范式革命
  • C语言督学营课后习题OJ题解:手把手教你如何高效刷题
  • 从通达OA到域控提权:vulntarget-a靶场完整渗透路线复盘
  • 如何高效批量下载无水印抖音视频:TikTokDownload终极解决方案
  • STM32 Bootloader开发避坑指南:从Flash分区到APP跳转的五个常见问题
  • NoFences:开源工具打造高效管理的Windows桌面智能分区系统
  • 从零到一:在Mac上搭建Podman开发环境全攻略
  • 构造
  • 钉钉CLI开源!首批开放10项核心产品能力,原生支持ClaudeCode、Cursor、Qoder
  • 别再只用Type-C充电了!手把手教你用LDR6035Q芯片,让平板变身‘充电宝’
  • 从自动驾驶到机器人:LQR控制器中的Q和R矩阵到底怎么调?实战经验分享
  • 李宏毅老师讲解AI Agent的核心技术:Context Engineering
  • 避开这5个坑!Simulink需求管理工具Requirements Toolbox的进阶使用指南
  • 3分钟免费获取股票数据:Python通达信接口终极指南
  • Stable Diffusion镜像免配置部署:Pixel Fashion Atelier开箱即用锻造体验
  • LaTeX Workshop:3大核心功能让VS Code成为你的专业排版助手
  • Tiled2Unity:突破2D游戏开发壁垒,革新地图导入工作流
  • 2026年环氧树脂地坪漆/金刚砂耐磨地坪/透水混凝土地坪材料厂家推荐:新疆东方昊邦建筑有限公司 - 品牌推荐官
  • OpenClaw安全实践:百川2-13B模型权限控制与敏感文件自动化防护
  • 树莓派5到手后别急着插电!这5个新手必做的配置,帮你省下半天折腾时间
  • Codex CLI的三种模式怎么选?从‘安全建议’到‘全自动执行’的实战场景解析
  • 5步解锁网页智能转换:让AI深度理解内容的实用工具
  • 手把手教你用BuildTools在Windows上搭建Spigot服务器(含网络问题解决)