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

代码随想录刷题Day26

今天继续回顾关于双指针的使用。

反转字符串中的单词:这道题,双指针的作用是用来作为“单词”的界线划分,不过在使用双指针之前,需要预处理字符串,也就是把多个空格“压缩”为一个空格,这样在后续的双指针确定单词界线时候会更加好操作些。双指针划分好单词界线之后,使用reverse函数先对整个字符串翻转,接着是对单词部分再叠加一次原地翻转。

反转链表:这道题双指针是用在链表的next指针方向反转上,这里其实涉及到三个指针,但是next指针就像swap时候的temp变量的作用,只是暂存一个值而已,主要还是curr指针和pre指针,分别用来指向next指针方向反转的两个节点信息。

删除链表的倒数第N个节点:这道题,我当时自己做出来用的是栈结构的思想,这里使用快慢指针来定位倒数第N这个位置,大致过程如下:

链表相交:这道题,印象中是先找出两个·字符串中较短的那个,然后一个链表用一个指针同步遍历比较,直到出现两个负责不同链表的指针的内容一致的时候就返回。

环形链表II:这道题需要两次使用双指针。第一次是使用快慢指针,快指针一步两个节点,慢指针一步一个节点,直到相遇时候停止继续遍历;接着是再重新用两个步调一致的指针,也就是都是一步一个节点的指针,一个从链表头开始,一个指针从相遇点开始,直到两个指针相遇的地方,就是入环口位置。这个做法是有数学规律推导的。

三数之和、四数之和:这两个题都是使用双指针来减少一层的嵌套,双指针移动是根据和的大小和target值的大小比较来确定的,以及在移动过程中,要注意去重。

这两天看关于双指针的题目,还是觉得双指针的作用还是很多样的,不是局限于一种功能,可以大致分成以下类型:

  • 两个指针,一个用于遍历,一个用于维护某种信息的数据,如移除元素、替换数字
  • 两个指针的功能是类似的,主要功能均是遍历作用,如反转字符串、翻转链表、翻转字符串里的单词、链表相交、三数之和、四数之和
  • 快慢指针,如删除链表的倒数第N个节点、环形链表II
http://www.dtcms.com/a/320658.html

相关文章:

  • 最长回文子串
  • Redis(④-消息队列削峰)
  • 使用OAK相机实现智能物料检测与ABB机械臂抓取
  • 《Hive、HBase、StarRocks、MySQL、OceanBase 全面对比:架构、优缺点与使用场景详解》
  • Numpy科学计算与数据分析:Numpy数据分析与图像处理入门
  • [激光原理与应用-182]:测量仪器 - 光束型 - 光束质量分析仪
  • 无人机航拍数据集|第9期 无人机风力电机表面损伤目标检测YOLO数据集2995张yolov11/yolov8/yolov5可训练
  • WORD接受修订,并修改修订后文字的颜色
  • 2-等级保护
  • LabVIEW多循环架构
  • (已解决)IDEA突然无法使用Git功能
  • 利用千眼狼sCMOS相机开展冷离子云成像与测量实验
  • Mac上安装和配置MySQL(使用Homebrew安装MySQL 8.0)
  • LeetCode 面试经典 150_数组/字符串_加油站(14_134_C++_中等)(贪心算法)
  • OpenBMC Entity Manager 深度解析:架构、原理与应用实践
  • 【优选算法】多源BFS
  • C#调用Unity实现设备仿真开发
  • Java+uniapp+websocket实现实时聊天,并保存聊天记录
  • (nice!!!)(LeetCode 每日一题) 808. 分汤 (深度优先搜索dfs)
  • Latex中公式部分输入正体的字母\mathrm{c}
  • [激光原理与应用-183]:测量仪器 - 光束型 - 光束参数乘积(BPP)的本质与含义,聚焦能力与传输稳定性的物理矛盾。
  • 汽车零部件深孔加工质控升级:新启航激光频率梳 3D 测量解决传统光学扫描遮挡
  • Linux网络--2、Socket编程
  • 力扣-238.除自身以外数组的乘积
  • 《Leetcode》-面试题-hot100-链表
  • 力扣热题100------287.寻找重复数
  • 大语言模型提示工程与应用:提示词基础使用方式
  • 9.2 通过DuEDrawingControl把eDrawing嵌入到C#中显示
  • windows线程基础
  • leetcode热题——有效的括号