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

C++速通LeetCode中等第18题-删除链表的倒数第N个结点(最简单含注释)

 绝妙!快慢指针法,快指针先走n步(复杂度O(n),O(1)):

/*** 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:ListNode* removeNthFromEnd(ListNode* head, int n) {//设定快慢指针,速度都是1,但是快指针先走n步,慢指针再同时出发,这样一来快指针到结尾时,慢指针到达指定位置ListNode* fast = head;ListNode* slow = head;for(int i = 0; i < n; i++) fast = fast->next;if(!fast) return head->next;//n=节点数时,不用移动了,特殊情况直接返回头节点的下一个while(fast && fast->next){fast = fast->next;slow = slow->next;}//循环结束的slow就是答案要求的起始位置if(!slow->next) return nullptr;slow->next = slow->next->next;return head;}
};

http://www.lryc.cn/news/443276.html

相关文章:

  • 鸿蒙 WebView 设置 Header
  • 电力施工作业安全行为检测图像数据集
  • 大数据实验2.Hadoop 集群搭建(单机/伪分布式/分布式)
  • 【CSS in Depth 2 精译_036】5.6 Grid 网格布局中与对齐相关的属性 + 5.7本章小结
  • Qt圆角窗口
  • 研究生第一次刷力扣day1
  • flink自定义process,使用状态求历史总和(scala)
  • 股指期货理论价格计算公式是什么?
  • 解决R包依赖版本不兼容问题
  • HarmonyOS开发者基础认证考试试题
  • 如何使用 React、TypeScript、TailwindCSS 和 Vite 创建 Chrome 插件
  • 机器学习——Stacking
  • 在HTML中添加图片
  • R语言机器学习算法实战系列(二) SVM算法(Support Vector Machine)
  • gdb调试使用记录
  • ESXi安装【真机和虚拟机】(超详细)
  • 基于SpringBoot+Vue的高校门禁管理系统
  • 【Linux-基础IO】C语言文件接口回顾 系统文件概念及接口
  • 系统架构笔记-3-信息系统基础知识
  • Linux下编程实现网络传送文件
  • 【速成Redis】04 Redis 概念扫盲:事务、持久化、主从复制、哨兵模式
  • SQL Server 2022的数据类型
  • Linux基础3-基础工具4(git),冯诺依曼计算机体系结构
  • 后台数据管理系统 - 项目架构设计-Vue3+axios+Element-plus(0916)
  • MySQL基础篇(黑马程序员2022-01-18)
  • nodejs 013:Prect 样式复用(multiple classes)例子
  • MQ入门(一):同步调用和异步调用--RabbitMQ基础入门
  • 由于安全风险,安全领导者考虑禁止人工智能编码
  • 地图相关的系统软件及插件
  • Elasticsearch如何排序,分页以及高亮查询