news 2026/5/1 9:55:22

【算法通关】双指针技巧深度解析:从基础到巅峰(Java 最优解)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【算法通关】双指针技巧深度解析:从基础到巅峰(Java 最优解)
【算法通关】双指针技巧深度解析:从基础到巅峰(Java 最优解)

我的主页:寻星探路
个人专栏:《JAVA(SE)----如此简单!!! 》 《从青铜到王者,就差这讲数据结构!!!》
《数据库那些事!!!》 《JavaEE 初阶启程记:跟我走不踩坑》
《JavaEE 进阶:从架构到落地实战 》 《测试开发漫谈》
《测开视角・力扣算法通关》 《从 0 到 1 刷力扣:算法 + 代码双提升》
《Python 全栈测试开发之路》
没有人天生就会编程,但我生来倔强!!!

寻星探路的个人简介:


在处理数组相关算法时,双指针(Two Pointers)能够巧妙地利用区间单调性或位置关系,将原本需要 的暴力搜索优化至 。本文精选四道经典题型,附带保姆级代码注释。


一、 移动零 (Move Zeroes) —— 快慢指针

1. 算法思路

  • 慢指针 (slow):指向“下一个非零元素应该存放的位置”。
  • 快指针 (fast):遍历数组,寻找非零元素。
  • 通过交换,非零元素被“推”到前面,零自然被“挤”到了后面。

2. Java 代码实现

classSolution{publicvoidmoveZeroes(int[]nums){// slow 指针之前(不含 slow)全是非零数intslow=0;for(intfast=0;fast<nums.length;fast++){// 当快指针发现非零数时if(nums[fast]!=0){// 如果快慢指针不相等,说明中间有 0,需要交换if(fast>slow){inttemp=nums[slow];nums[slow]=nums[fast];nums[fast]=temp;}// 无论是否交换,slow 都要后移,因为当前 slow 位置已被非零数占据slow++;}}}}

二、 盛最多水的容器 (Container With Most Water) —— 左右指针

1. 算法思路

  • 核心原理:木桶效应。容量由“短板”决定。
  • 指针移动逻辑:若移动长板,宽度减小,高度依然受限于短板,容量只会变小;只有移动短板,才可能换来更高的高度。

2. Java 代码实现

classSolution{publicintmaxArea(int[]height){intleft=0,right=height.length-1;// 定义左右边界intmax=0;// 存储最大面积while(left<right){// 1. 计算当前面积:宽 (right - left) * 高 (左右两端的最小值)intcurrentArea=Math.min(height[left],height[right])*(right-left);// 2. 更新全局最大面积max=Math.max(max,currentArea);// 3. 贪心策略:哪边矮,就移动哪边的指针if(height[left]<height[right]){left++;}else{right--;}}returnmax;}}

三、 三数之和 (3Sum) —— 排序 + 左右指针

1. 算法思路

  • 排序:使数组有序,方便使用双指针并进行去重。
  • 枚举:固定第一个数a,在剩下的区间里通过双指针寻找bc,使得a + b + c = 0

2. Java 代码实现

classSolution{publicList<List<Integer>>threeSum(int[]nums){List<List<Integer>>ans=newArrayList<>();Arrays.sort(nums);// 1. 先排序intn=nums.length;for(inti=0;i<n;i++){// 如果当前数大于 0,由于数组有序,后续三个数之和一定大于 0if(nums[i]>0)break;// 2. 对第一个数 a 去重:如果当前数和前一个数相同,跳过if(i>0&&nums[i]==nums[i-1])continue;intleft=i+1,right=n-1;while(left<right){intsum=nums[i]+nums[left]+nums[right];if(sum==0){ans.add(Arrays.asList(nums[i],nums[left],nums[right]));// 3. 对第二个数 b 去重while(left<right&&nums[left]==nums[left+1])left++;// 4. 对第三个数 c 去重while(left<right&&nums[right]==nums[right-1])right--;left++;right--;}elseif(sum<0){left++;// 和太小,左指针右移增加数值}else{right--;// 和太大,右指针左移减小数值}}}returnans;}}

四、 接雨水 (Trapping Rain Water) —— 双指针巅峰

1. 算法思路

  • 单点逻辑:位置 能接的水 = 。
  • 双指针优化:我们不需要预处理所有高度,只需要用两个指针从两侧向中间靠拢。

2. Java 代码实现

classSolution{publicinttrap(int[]height){intleft=0,right=height.length-1;intleftMax=0,rightMax=0;// 记录左边和右边遇到的最高高度intres=0;while(left<right){// 更新左右两侧目前的最高墙leftMax=Math.max(leftMax,height[left]);rightMax=Math.max(rightMax,height[right]);// 如果左边的墙比右边的墙矮// 意味着:对于 left 这个点,接多少水取决于左侧的 leftMax(因为右侧一定有比它更高的墙)if(leftMax<rightMax){res+=(leftMax-height[left]);left++;}else{// 反之,right 这个点接多少水取决于右侧的 rightMaxres+=(rightMax-height[right]);right--;}}returnres;}}

💡 总结:双指针解题的思考模版

  1. 场景识别
  • 同向指针(快慢指针):常用于处理“原地修改”或“寻找循环/中点”。
  • 相向指针(对撞指针):常用于处理“有序数组寻找两数/多数之和”或“区间极值(盛水/接水)”。
  1. 核心三要素
  • 指针初始化:是(0, length-1)还是(0, 0)
  • 移动条件:什么情况下左移?什么情况下右移?(通常依据单调性判断)。
  • 收缩条件:如何有效跳过重复解(去重)以保证效率?

通过以上四道题的练习,你应该能感受到双指针在降低时间复杂度方面的巨大威力。


感谢你的阅读!如果觉得代码注释对你有帮助,欢迎点赞和收藏!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 4:59:06

毕业设计救星:AI智能体云端GPU方案,1小时1块不耽误

毕业设计救星&#xff1a;AI智能体云端GPU方案&#xff0c;1小时1块不耽误 1. 为什么你需要云端GPU方案&#xff1f; 作为一名大四学生&#xff0c;当你正在为毕业设计焦头烂额时&#xff0c;突然发现实验室的GPU资源被占满&#xff0c;自己的笔记本电脑又跑不动复杂的AI模型…

作者头像 李华
网站建设 2026/4/25 17:27:46

AI异常检测实战:云端GPU免配置,3步完成部署

AI异常检测实战&#xff1a;云端GPU免配置&#xff0c;3步完成部署 引言&#xff1a;金融科技中的AI异常检测 在金融科技领域&#xff0c;异常交易检测是风控系统的核心环节。传统规则引擎需要人工设定阈值&#xff0c;面对新型欺诈手段时往往反应滞后。而AI模型能自动学习正…

作者头像 李华
网站建设 2026/5/1 5:06:13

AI实体分析从入门到精通:云端实验环境

AI实体分析从入门到精通&#xff1a;云端实验环境 引言&#xff1a;为什么需要云端实验环境&#xff1f; 作为一名职业培训学员&#xff0c;当你需要完成AI安全实操作业时&#xff0c;可能会遇到这样的困境&#xff1a;家用电脑性能不足跑不动复杂的AI模型&#xff0c;学校机…

作者头像 李华
网站建设 2026/5/1 7:20:43

AI恶意流量检测避坑指南:云端GPU免踩雷,新手指南

AI恶意流量检测避坑指南&#xff1a;云端GPU免踩雷&#xff0c;新手指南 引言&#xff1a;当AI遇上网络安全 想象一下&#xff0c;你刚转行学习网络安全&#xff0c;导师给你布置了一个任务&#xff1a;复现一篇关于AI检测恶意流量的论文。你兴冲冲地打开电脑&#xff0c;却发…

作者头像 李华
网站建设 2026/5/1 9:51:34

5大AI安全模型对比:云端GPU 3小时搞定评测

5大AI安全模型对比&#xff1a;云端GPU 3小时搞定评测 引言&#xff1a;为什么企业需要AI安全模型评测&#xff1f; 在数字化转型浪潮中&#xff0c;企业面临的安全威胁日益复杂。传统的基于规则的安全检测系统&#xff08;如防火墙、杀毒软件&#xff09;已经难以应对新型攻…

作者头像 李华
网站建设 2026/5/1 5:04:14

AI智能体快速体验指南:5分钟部署,成本低至1块钱

AI智能体快速体验指南&#xff1a;5分钟部署&#xff0c;成本低至1块钱 1. 什么是AI智能体&#xff1f;为什么投资人需要关注&#xff1f; 想象你有一个24小时待命的数字员工——它能自动分析数据、编写代码、处理业务流程&#xff0c;甚至能从错误中学习改进。这就是AI智能体…

作者头像 李华