跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
编程语言算法

使用双指针解决链表问题

双指针技术在链表问题中的应用。内容包括基础双指针删除节点、快慢指针寻找中点、快慢指针检测环并定位入环节点,以及前缀指针寻找倒数第 k 个节点。相比单指针方案,双指针能将空间复杂度优化至 O(1),减少重复遍历,提升执行效率。

林间仙子发布于 2026/3/24更新于 2026/7/537 浏览
使用双指针解决链表问题

双指针概述

双指针是指使用两个指针协同解决问题。虽然单指针也能解决部分链表问题,但双指针在时间复杂度和空间复杂度方面通常更具优势。

基础双指针

以删除链表节点为例,使用单指针需要重新开辟空间;而使用双指针,假设分别为 p1 和 p2,p2 用于判断值是否符合条件,且保证 p2 一直是 p1 的下一位,用来决定 p1 是顺序移动还是跳过。可以设定一个哨兵位来辅助,将空间复杂度降为 O(1)。

快慢指针:寻找中点

快指针一次走两步,慢指针一次走一步。当快指针到达尾节点时,慢指针刚好到达中间节点。这比先遍历一遍获取长度再遍历一次的方法更高效。

快慢指针:检测环与入环节点

对于带环链表,需分两部分解决:判断是否有环,以及找到进入环的节点。

一、判断有环 快指针走两步,慢指针走一步。若两者相遇,说明链表中有环。若无环,快指针会先到达尾部。关于证明:当慢指针入环,快指针必在环中。设追击距离为 N,因速度差为 1,每次距离缩短一个节点,N 次后追上。

二、找入环节点 一个指针从原链表头节点开始每次一步,另一个指针从快慢指针相遇的节点开始同样每次一步。当这两个指针再次相遇,该节点即为入环节点。

证明逻辑如下: 设从头节点到入环节点的距离为 A,从入环节点到相遇节点的距离为 B,环长度为 C。 慢指针路程:A + B 快指针路程:A + B + n * C(n 为绕环圈数) 由于快指针速度是慢指针的两倍,故: 2 * (A + B) = A + B + n * C 化简得:A = n * C - B 即从头节点出发的指针走到入环节点的路程,等于从相遇节点出发绕环 n 圈回到入环节点的路程。

静态双指针:寻找倒数第 k 个节点

使用前指针和后指针。初始都指向头节点。根据 k 值,让前指针先运动 k 步。之后前指针和后指针同时运动,当前指针为空时,后指针指向的节点即为目标节点。

总结

双指针在遍历链表时比单指针更具优势,甚至可以达到一加一大于二的效果。空间复杂度能从 O(n) 降为 O(1)。此外,双指针能让链表的拼接、分割、合并等操作逻辑更清晰,在一次遍历中完成'遍历、判断、修改'等多步操作,避免重复遍历带来的性能损耗。

目录

  1. 双指针概述
  2. 基础双指针
  3. 快慢指针:寻找中点
  4. 快慢指针:检测环与入环节点
  5. 静态双指针:寻找倒数第 k 个节点
  6. 总结
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Kubernetes Gateway API 与 Envoy Gateway 部署指南
  • 本地项目上传 Gitee 完整指南:新手避坑版
  • 矿场轨道异物AI监测系统:构建矿山运输安全智能防线
  • Java 后端 Web API 开发实战:从架构设计到部署监控
  • 设计一个支持万人并发抢购的秒杀系统架构方案
  • Java 动态规划:经典路径问题详解
  • Go 语言快速入门与核心知识点总结
  • Java OCR 快速集成:基于 PaddleOCR 的实战指南
  • LangChain 结合 Milvus 与千帆大模型构建 RAG 应用实践
  • Android 设备连接 Mac 的 6 种常用方法
  • 快速创建适配 imToken DApp 浏览器的区块链小游戏应用
  • 机器人脑部药物递送三大技术路径的可转化性分析
  • 机器人脑部药物递送三大技术路径的可转化性分析研究
  • 技术学习资源整理:电子书、软件与 AI 工具合集
  • 夸克网盘精选资源汇总:电子书、软件与学习素材
  • 技术学习资源精选:电子书、软件及 AI 工具目录
  • Krita 插件配置与 AI 绘画模型部署指南:故障诊断与维护
  • Kotlin 相等性判断:结构相等与引用相等详解
  • 低空经济无人机巡检系统一网统飞落地方案
  • 低空经济一网统飞无人机巡检系统落地方案

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online