【力扣hot100】双指针专题
文章目录283. 移动零双指针11. 盛最多水的容器双指针167. 两数之和 II - 输入有序数组双指针15. 三数之和42. 接雨水前后缀分解相向双指针总结283. 移动零283. 移动零双指针使用双指针左指针指向当前已经处理好的序列的尾部右指针指向待处理序列的头部。右指针不断向右移动每次右指针指向非零数则将左右指针对应的数交换同时左指针右移。注意到以下性质左指针左边均为非零数右指针左边直到左指针处均为零。因此每次交换都是将左指针的零与右指针的非零数交换且非零数的相对顺序并未改变。classSolution{publicvoidmoveZeroes(int[]nums){intleft0,right0;while(rightnums.length){if(nums[right]!0){inttemnums[left];nums[left]nums[right];nums[right]tem;left;}right;}}}11. 盛最多水的容器11. 盛最多水的容器双指针如果短的边界不变不管长的边界怎么向内移动容积只会变小所以每次要移动短的边界每次将对应的数字较小的那个指针往另一个指针的方向移动一个位置就表示我们认为这个指针不可能再作为容器的边界了classSolution{publicintmaxArea(int[]height){intl0,rheight.length-1;intans0;while(lr){inttemMath.min(height[l],height[r])*(r-l);ansMath.max(ans,tem);if(height[l]height[r])l;elser--;}returnans;}}167. 两数之和 II - 输入有序数组167. 两数之和 II - 输入有序数组双指针sum过大则最大数不选于是right--sum过小则最小数不选于是leftclassSolution{publicint[]twoSum(int[]numbers,inttarget){intleft0,rightnumbers.length-1;while(leftright){intsumnumbers[left]numbers[right];if(sumtarget){returnnewint[]{left1,right1};}if(sumtarget){right--;}else{left;}}returnnewint[]{};}}15. 三数之和15. 三数之和为方便双指针以及跳过相同元素先把 nums 排序。枚举 nums[i]问题变成 nums[j]nums[k]−nums[i]题目转换为167. 两数之和相似。如何避免重复三元组在外层循环中如果nums[i] nums[i−1]则跳过nums[i]直接 continue。在内层循环中当三数之和等于 0 时为避免把相同的三元组计入答案跳过后续相同的 nums[j] 和 nums[k]也可以只跳过相同的 nums[j]。classSolution{publicListListIntegerthreeSum(int[]nums){Arrays.sort(nums);//先排序成有序的ListListIntegeransnewArrayList();intnnums.length;for(inti0;in-2;i){if(i0nums[i]nums[i-1]){//nums[i]去重遇到重复直接跳过continue;}if(nums[i]nums[i1]nums[i2]0)break;//优化一if(nums[i]nums[n-1]nums[n-2]0)continue;//优化二intji1,kn-1;while(jk){intsumnums[i]nums[j]nums[k];if(sum0){j;}elseif(sum0){k--;}else{ans.add(List.of(nums[i],nums[j],nums[k]));j;while(jknums[j]nums[j-1]){//nums[j]去重j;}k--;while(kjnums[k]nums[k1]){//nums[k]去重k--;}}}}returnans;}}优化如果当前最小的三个数相加都大于0即nums[i] nums[i 1] nums[i 2] 0则说明后面的数不可能存在符合题目的直接break如果当前nums[i]加上最大的两个数还小于0即nums[i] nums[n - 1] nums[n - 2] 0则说明i太小直接跳过这个i把nums[i]用int x代替会更省时List.of() 快速打包几个元素成一个只读列表在 LeetCode 中非常常用一行代码就能返回一个列表结果42. 接雨水42. 接雨水前后缀分解先从左到右计算从0到这个位置的最大高度再从右到左计算从结尾到这个位置的最大高度然后由min(前,后) - 高度得到每个位置能接多少雨水并累加起来classSolution{publicinttrap(int[]height){intnheight.length;int[]qnewint[n];int[]hnewint[n];q[0]height[0];h[n-1]height[n-1];for(inti1;in;i){q[i]Math.max(q[i-1],height[i]);}for(intin-2;i0;i--){h[i]Math.max(h[i1],height[i]);}intans0;for(inti0;in-1;i){ansMath.min(q[i],h[i])-height[i];}returnans;}}时间复杂度O(n)空间复杂度O(n)相向双指针优化一下空间复杂度原理类似11. 盛最多水的容器classSolution{publicinttrap(int[]height){intnheight.length;intans0;intleft0;intrightn-1;intpreMax0;// 前缀最大值随着左指针 left 的移动而更新intsufMax0;// 后缀最大值随着右指针 right 的移动而更新while(leftright){preMaxMath.max(preMax,height[left]);sufMaxMath.max(sufMax,height[right]);if(preMaxsufMax){anspreMax-height[left];left;}else{anssufMax-height[right];right--;}}returnans;}}总结双指针Two Pointers通过维护两个指针的位置让两个指针按照某种规则移动从而减少不必要的遍历。传统暴力fori:forj:判断时间复杂度O(n²)双指针left → ← right两个指针共同移动时间复杂度O(n)核心不需要回头通过指针移动缩小问题范围

相关新闻

Shopify/TikTok/淘宝三大生态AI设计适配指南(含平台算法偏好白皮书V2.3)

Shopify/TikTok/淘宝三大生态AI设计适配指南(含平台算法偏好白皮书V2.3)

更多请点击: https://kaifayun.com 第一章:Shopify/TikTok/淘宝三大生态AI设计适配指南(含平台算法偏好白皮书V2.3) AI生成内容在跨平台部署时,必须遵循各生态底层算法对视觉语义、交互信号与元数据结构的差异化建模逻…

2026/7/29 2:14:16阅读更多 →
树莓派全息投影制作指南:从硬件搭建到交互实现

树莓派全息投影制作指南:从硬件搭建到交互实现

1. 从“全息舱”的幻想,到树莓派的现实“全息舱”这个词,听起来就像是科幻电影里的玩意儿——一个能投射出立体影像、让人仿佛置身于另一个空间的设备。很多极客和创客看到这个标题,第一反应可能是激动,紧接着就是迷茫&#xff1a…

2026/7/29 2:14:16阅读更多 →
Unity角色下蹲与滑行系统:基于Input System与状态机的工业级实现

Unity角色下蹲与滑行系统:基于Input System与状态机的工业级实现

1. 项目概述与核心思路在Unity里做角色移动,新手和老手的分水岭往往就在“下蹲”和“滑行”这两个动作上。乍一看,不就是按个键让角色高度变低吗?但真做起来,你会发现这里面的坑一个接一个:下蹲时摄像机怎么平滑过渡&a…

2026/7/29 2:14:16阅读更多 →
Java并发工具类实战:从原理到电商秒杀优化

Java并发工具类实战:从原理到电商秒杀优化

1. Java并发工具类全景解析在Java生态中,并发编程能力是区分初级与中高级开发者的关键指标。java.util.concurrent包提供的工具类,远比简单的synchronized和volatile更适应现代多核处理器架构。我在电商秒杀系统开发中,曾通过合理选用并发工具…

2026/7/29 3:28:31阅读更多 →
【GitHub Copilot Harness工作流技术解析】用单一工具完成原型、规划、实现与代码审查

【GitHub Copilot Harness工作流技术解析】用单一工具完成原型、规划、实现与代码审查

文章目录GitHub Copilot Harness工作流技术解析:用单一工具完成原型、规划、实现与代码审查一、引言二、Harness 到底是什么2.1 模型只是大脑,Harness 才负责把工作做完2.2 一套 Harness,多种使用入口三、八步工作流:从想法到可提…

2026/7/29 3:28:31阅读更多 →
5步掌握Obsidian加密技巧:终极指南保护你的敏感笔记内容

5步掌握Obsidian加密技巧:终极指南保护你的敏感笔记内容

5步掌握Obsidian加密技巧:终极指南保护你的敏感笔记内容 【免费下载链接】obsidian-encrypt Hide secrets in your Obsidian.md vault 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-encrypt 在数字笔记时代,隐私保护已成为知识工作者的…

2026/7/29 3:28:31阅读更多 →
从生产文员到计划员:2026年转型必备技能与学习路径全解析

从生产文员到计划员:2026年转型必备技能与学习路径全解析

从生产文员转向计划员,是许多制造业从业者实现职业跃升的经典路径。这个转变意味着从“执行记录”走向“统筹规划”,工作视角从局部转向全局,职业发展空间也随之打开。如果你正站在这个转型的十字路口,不知道从何学起,…

2026/7/29 3:28:31阅读更多 →
FastAPI + Tortoise-ORM 企业端实战:企业认证、信息保存、审核与登录的设计与实现

FastAPI + Tortoise-ORM 企业端实战:企业认证、信息保存、审核与登录的设计与实现

FastAPI Tortoise-ORM 企业端实战:企业认证、信息保存、审核与登录的设计与实现一、前言介绍1.1 项目背景1.2 功能概览1.3 数据模型总览二、环境准备2.1 依赖库清单2.2 数据库与缓存配置要点2.3 路由与目录结构三、知识点讲解3.1 企业域四表拆分与 enterprise_id 关…

2026/7/29 3:28:31阅读更多 →
Maven Surefire与Failsafe插件实现单元测试与集成测试分离的完整指南

Maven Surefire与Failsafe插件实现单元测试与集成测试分离的完整指南

1. 项目概述:为什么我们需要分离单元测试与集成测试?在Java后端开发中,测试是保证代码质量的基石。但很多团队,尤其是项目初期,往往会把所有测试一股脑地扔给Maven Surefire插件去执行。这会导致一个典型问题&#xff…

2026/7/29 3:26:31阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/28 4:06:39阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/28 2:08:06阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/28 1:38:28阅读更多 →
28. Agent 执行到一半想暂停?用 interrupt 给它设个“关卡“!

28. Agent 执行到一半想暂停?用 interrupt 给它设个“关卡“!

28. Agent 执行到一半想暂停?用 interrupt 给它设个“关卡“! 在构建复杂的 Agent 系统时,我们经常会遇到这样的场景:Agent 正在执行一个多步骤的任务,比如“下单购买商品”,但执行到一半时,我们…

2026/7/29 0:01:46阅读更多 →
自律同行,突破无界!NANK南卡正式官宣曾舜晞成为品牌代言人

自律同行,突破无界!NANK南卡正式官宣曾舜晞成为品牌代言人

近日,国际专注开放式技术研发的声学品牌Nank南卡,正式官宣实力艺人曾舜晞担任品牌代言人。消息一经发出便轰动全网。为什么耳机品牌不选择流量明星、老牌歌手?而且是选择曾舜晞?让我们一起来探索一下!比起短期的流量&a…

2026/7/29 0:01:46阅读更多 →
【RT-DETR多模态创新改进】CVPR 2025 | 独家特征融合创新改进篇 | 引入RLAB残差线性注意力模块,有效融合并强调多尺度特征,多种改进点,适合红外与可见光融合目标检测任务,有效涨点

【RT-DETR多模态创新改进】CVPR 2025 | 独家特征融合创新改进篇 | 引入RLAB残差线性注意力模块,有效融合并强调多尺度特征,多种改进点,适合红外与可见光融合目标检测任务,有效涨点

一、本文介绍 🔥本文在RT-DETR多模态融合目标检测中引入RLAB残差线性注意力模块,可在不同模态特征交互阶段进行多次残差细化,使可见光、红外等特征在尺度、语义和空间位置上更好对齐;随后将细化特征与解码器输出拼接并生成Q、K、V,通过线性注意力自适应强化关键通道、目…

2026/7/29 0:01:46阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/28 20:22:24阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/28 3:17:03阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/28 2:35:58阅读更多 →