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

代码随想录刷题Day26

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

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

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

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

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

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

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

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

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

相关文章:

  • 【Git】企业级使用
  • 路由器不能上网的解决过程
  • GPT-5与国内头部模型厂商主要能力对比
  • GPT-5 全面解析与 DeepSeek 实战对比:推理、工具调用、上下文与成本
  • 汽车电子:现代汽车的“神经中枢“
  • 宁商平台税务新政再升级:精准施策,共筑金融投资新生态
  • ubuntu alias命令使用详解
  • 仅需8W,无人机巡检系统落地 AI 低空智慧城市!可源码交付
  • WSL 安装 Ubuntu
  • HBase的异步WAL性能优化:RingBuffer的奥秘
  • 光猫、路由器和交换机
  • DuoPlus支持导入文件批量配置云手机参数,还优化了批量操作和搜索功能!
  • 快速上手 Ollama:强大的开源语言模型框架
  • git如何使用和操作命令?
  • Lattice Radiant 下载ROM以及逻辑分析仪调试
  • 如何在 Ubuntu 24.04 LTS 或 22.04/20.04 上安装 Apache Maven
  • VS Code 快捷键快速插入带年月日时分秒的时间注释
  • OpenAI 最新开源模型 gpt-oss (Windows + Ollama/ubuntu)本地部署详细教程
  • 【Lua】XLua一键构建工具
  • react+echarts实现变化趋势缩略图
  • 我的c#用到Newtonsoft.Json.dll,Fleck.dll这两个dll能否打到一个exe 中,而不是一起随着exe拷贝
  • 无人机仿真环境搭建
  • 使用pytest对接口进行自动化测试
  • 微软XBOX游戏部门大裁员
  • QS菜单栏的安全与隐私Tile组件(GMS中的)加载逻辑
  • 使用 C# 通过 .NET 框架开发应用程序的安装与环境配置
  • Godot ------ 通过鼠标对节点进行操作
  • 僵尸进程、孤儿进程、进程优先级、/proc 文件系统、CRC 与网络溢出问题处理(实战 + 原理)
  • 强制用户更改WordPress密码的重要性及实现方法
  • Linux 内存管理之page folios