首页/新闻资讯/正文详情

【双指针】基础知识

发布时间:2026/11/3 2:52:28 来源:云帆数科 栏目:资讯中心
【双指针】基础知识
为何学习双指针算法效率高把嵌套循环变成单层循环时间复杂度从 O (n²) 降到 O (n)数据量越大优势越明显空间省不需要额外开辟数组、哈希表等空间空间复杂度 O (1)逻辑简单不用复杂的递归或数学推导只要想清楚 “两个指针怎么动”代码就能写出来。以下是几道简单但典型的双指针算法的题目左右指针LeetCode 167. 两数之和 II - 输入有序数组题目描述在有序数组中找出两个数使它们的和为 target。返回这两个数的下标。解法思路如果暴力双层循环时间复杂度是 O(N^2)。但数组是有序的我们可以用左右指针夹击left 指向最小值最左边right 指向最大值最右边。计算 sum nums[left] nums[right]。如果 sum target找到了如果 sum target说明两数之和太小了需要增大于是 left。如果 sum target说明两数之和太大了需要减小于是 right–。int*twoSum(int*numbers,intnumbersSize,inttarget,int*returnSize){intleft0;intrightnumbersSize-1;int*ans(int*)malloc(sizeof(int)*2);*returnSize2;while(leftright){intsumnumbers[left]numbers[right];if(sumtarget){ans[0]left1;// 题目要求下标从 1 开始ans[1]right1;returnans;}elseif(sumtarget){left;// 和太小左指针右移}else{right--;// 和太大右指针左移}}ans[0]-1;ans[1]-1;returnans;}快慢指针LeetCode 876. 链表的中间结点题目描述给定一个带有头结点 head 的非空单链表返回链表的中间结点。如果有两个中间结点则返回第二个中间结点。解法思路常规解法是遍历两遍第一遍算长度第二遍找中点。但用双指针只需遍历一遍。我们定义两个指针 slow 和 fast初始都指向头节点 head。slow 每次走 1 步fast 每次走 2 步。当 fast 走到链表末尾时slow 刚好走到中点。structListNode*middleNode(structListNode*head){structListNode*slowhead;structListNode*fasthead;// fast 走到头或者 fast 的下一步走到头就结束while(fast!NULLfast-next!NULL){slowslow-next;// 慢指针走一步fastfast-next-next;// 快指针走两步}returnslow;}距离差指针LeetCode 19. 删除链表的倒数第 N 个结点题目描述给你一个链表删除链表的倒数第 n 个结点并且返回链表的头结点。解法思路如果先遍历求长度再遍历去删同样是两遍扫描。双指针的绝妙之处在于制造固定的距离差。定义一个虚拟头结点 dummy重要技巧防止删除头结点。让 fast 指针先走 n 1 步。然后 slow 从 dummy 出发与 fast 一起同步向前走。当 fast 走到 NULL 时slow 刚好停在倒数第 n 个节点的前一个节点此时直接执行删除操作即可。structListNode*removeNthFromEnd(structListNode*head,intn){structListNode*dummy(structListNode*)malloc(sizeof(structListNode));dummy-nexthead;structListNode*fastdummy;structListNode*slowdummy;// fast 先走 n1 步for(inti0;in;i){fastfast-next;}// 两人一起走while(fast!NULL){fastfast-next;slowslow-next;}// 此时 slow 位于倒数第 n 个的前一个structListNode*tempslow-next;slow-nextslow-next-next;free(temp);structListNode*newHeaddummy-next;free(dummy);returnnewHead;}最后双指针算法看似变化多端但核心算法只有一个不要轻易申请空间试着在原数据结构上通过移动改变指针的规则来寻找答案

相关推荐

一个 4B 小模型被玩出了三条路:一句话生成 3D 世界,还能去给自动驾驶当“眼睛”
一个 4B 小模型被玩出了三条路:一句话生成 3D 世界,还能去给自动驾驶当“眼睛”

一个 4B 小模型被玩出了三条路:一句话生成 3D 世界,还能去给自动驾驶当“眼睛” 最近科技圈有个挺有意思的现象:同一款“4B”体量的小模型,被不同团队拉去干了完全不相干的三件事。 一支人马拉它去做 3D 场景,你打一句… · 2026/11/3 2:51:28

大模型能替你写研究局限吗:能力边界与自查
大模型能替你写研究局限吗:能力边界与自查

把「研究局限」这一节交给大模型,拿回来的往往是一段读起来很顺、放进哪篇论文都不违和的文字。它能不能直接用,不取决于文笔,而取决于你手里有没有一把尺子去量它。下面说清三件事:能力边界在哪、五类缺陷怎么识别与改写、哪些句… · 2026/11/3 2:51:28

实验研究的内部效度威胁:单组前后测为什么排除不掉
实验研究的内部效度威胁:单组前后测为什么排除不掉

实验做完了,评审意见只有一句:怎么证明这个变化不是你自己的测量造成的。这类质疑很少指向统计方法,它指向内部效度——观测到的差异能否归因于处理。单组前后测在这一点上先天吃亏:一个组、两个时点,五项威胁同时敞口… · 2026/11/3 2:51:28

StatusServer:分布式系统健康监控的核心架构与实践
StatusServer:分布式系统健康监控的核心架构与实践

1. StatusServer:现代分布式系统的健康监控中枢在分布式架构成为主流的今天,服务健康监控已从"可有可无"变成了"生死攸关"的基础设施。三年前我们某个核心服务的一次雪崩事故让我深刻认识到:当30个微服务节点中有3个出现… · 2026/11/3 3:29:34

SAP Fiori扩展部署:BAS与gCTS集成实战指南
SAP Fiori扩展部署:BAS与gCTS集成实战指南

1. 这不是“加个按钮”那么简单:Fiori扩展部署的本质是ABAP系统能力的再定义你看到“SAP Fiori 扩展部署到 ABAP 环境”这个标题,第一反应是不是——不就是改个UI5代码、打个包、传到后台?我试过太多次了,这种想法在2024年已经成了… · 2026/11/3 3:29:34

2026年AI发展:从规模竞赛到数据智能的转型
2026年AI发展:从规模竞赛到数据智能的转型

1. 2026年AI发展的关键转折点2026年很可能成为人工智能发展史上的一个重要分水岭。过去十年间,AI领域最显著的竞争焦点就是模型规模的不断膨胀——从最初的百万参数到如今的万亿参数,各大科技公司都在比拼谁能训练出更大的模型。但这种"越大越好&qu… · 2026/11/3 3:29:34

虚拟展览VR/AR开发:从帧率预算到交互验收的工程实践
虚拟展览VR/AR开发:从帧率预算到交互验收的工程实践

简介:面向VR/AR初学者、独立开发者及教学备课人员,这份文档以“创建虚拟展览体验”为主线,给出可扩展的开发脚本案例与流程框架,帮助读者快速理清从创意到可发布应用的实现路径。内容围绕项目初始化与环境配置、3D模型导入与场景布… · 2026/11/3 3:29:34

C语言期末305题题库查漏:语法数组指针易错点复习地图
C语言期末305题题库查漏:语法数组指针易错点复习地图

简介:这份详解版C语言期末题库面向高校理工科学生与备考C语言期末考试的读者,聚焦选择题、填空题、判断题、读程序写结果和压轴编码等常见题型,帮助在有限时间内梳理函数、标识符、三种控制结构、数据类型、运算符、条件表达式及标准库函数等… · 2026/11/3 3:29:34

进程同步四大经典模型:死锁、信号量与并发故障排查
进程同步四大经典模型:死锁、信号量与并发故障排查

凌晨两点被叫起来救一个"服务假死"的场,日志停在某一行不动,进程活着,CPU 几乎为零,所有请求都超时。抓线程栈一看,两个工作线程一个卡在入队、一个卡在出队,各自握着一把锁,等着对方… · 2026/11/3 3:28:34

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 4:42:45

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 5:17:18

STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战
STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题
ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践
基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 4:42:45

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 5:17:18

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码