发布时间:2026/7/8 1:01:06
【算法日记 17】LeetCode 11. 盛最多水的容器:双指针与贪心思维的完美碰撞
题目背景今天我们来啃一块算法面试中的硬骨头也是极其经典的双指针大题[11. 盛最多水的容器]。 这道题的官方描述有很多“坐标轴”、“垂线”之类的数学术语很多新手一看就晕了。但其实我们完全可以把它当成一个“挑木板拼鱼缸”的游戏【大白话题目描述】给你一排高低不平的木板数组height让你从中挑出两块木板作为鱼缸的左右两面墙。 你的目标是找出哪两块木板拼成的鱼缸能装下最多的水(注意水能装多高取决于两块木板中较矮的那一块也就是著名的“木桶效应”。)【示例】输入:[1,8,6,2,5,4,8,3,7]输出:49解释:选高度为 8 和高度为 7 的两块木板宽度为 7高度取矮的 7最大面积7 * 7 49。✨ 核心破题逻辑左右指针的“贪心博弈”为了让鱼缸装最多的水我们需要让宽度尽量大同时高度也尽量高。 如果是暴力解法两两组合去算面积时间复杂度是 $O(N^2)$在数据量大的时候必然会超时。这就需要祭出我们的降维打击绝招对撞双指针左右指针1. 初始状态霸占最大宽度我们让左指针left站在最左边右指针right站在最右边。此时鱼缸的宽度是最大的算出一个初始面积记录下来。2. 灵魂拷问接下来该挪哪块木板既然要往中间找我们每一次只能移动一块木板。到底该挪高的那一块还是矮的那一块 我们来推演一下如果挪动高的木板宽度变小了。而水的高度永远受限于那块没动的“矮木板”。所以不管新找的木板有多高水位都不可能超过原来的矮木板。结论挪高木板面积一定会变小纯属血亏如果挪动矮的木板宽度虽然变小了但是我们有可能遇到一块超级高的木板这样一来水位大幅提升增加的高度完全可能弥补宽度的损失从而创下面积新高结论挪矮木板才有一线生机搏一把大的破题口诀算完面积谁矮就无情地抛弃谁让它往中间走一步寻找更高的木板 C 满分 AC 代码掌握了上面的贪心逻辑代码写起来简直行云流水极其优雅#include iostream #include vector #include algorithm using namespace std; class Solution { public: int maxArea(vectorint height) { // 绝招左右指针 int left 0; // 左边的木板 int right height.size() - 1; // 右边的木板 int max_area 0; // 记录历史最大水量 // 当两块木板还没有相遇的时候不断往中间挤 while (left right) { // 1. 算宽度 (下标相减) int width right - left; // 2. 算高度 (木桶效应取决于矮的那块) int current_height min(height[left], height[right]); // 3. 算当前容量并看看有没有破纪录 int current_area width * current_height; max_area max(max_area, current_area); // 4. 核心贪心抉择抛弃矮木板去寻找更高的 if (height[left] height[right]) { left; // 左边矮左边往右走一步寻找生机 } else { right--; // 右边矮右边往左走一步寻找生机 } } return max_area; } }; 复杂度深度剖析时间复杂度$O(N)$。双指针left和right分别从两头往中间走每次循环必定会淘汰一块木板移动一个指针。当两个指针相遇时遍历结束所以整个数组最多只会被扫描一次。这比 $O(N^2)$ 的暴力解法快了几个数量级空间复杂度$O(1)$。我们只借用了left、right、max_area等几个整型变量来记录状态完全没有开辟任何新的数组或哈希表空间内存消耗做到了极致的精简。 总结这道题是“双指针”结合“贪心思想”的巅峰之作。它的精髓不在于代码有多复杂而在于那个直击灵魂的数学逻辑——“在确定性宽度缩小中去寻找唯一可能打破天花板的变量抛弃短板”。吃透这个逻辑以后遇到类似求极值的问题你都能一击必杀

相关新闻

VOC/COCO/YOLO 3种格式互转实战:Python脚本实现80%代码复用
2026/7/8 0:01:06

VOC/COCO/YOLO 3种格式互转实战:Python脚本实现80%代码复用

VOC/COCO/YOLO 3种格式互转实战:Python脚本实现80%代码复用 在计算机视觉项目中,数据格式转换是算法工程师和数据工程师的日常痛点。当你需要将PASCAL VOC格式的数据集迁移到YOLOv7训练框架,或是将COCO格式的标注转换为轻量化的TXT格式时&…

阅读更多
锂离子电池组平衡技术与BQ25887应用解析
2026/7/8 0:01:06

锂离子电池组平衡技术与BQ25887应用解析

1. 电池单元平衡的核心挑战与解决方案在2节串联锂离子/聚合物电池组中,单体电池间的容量差异会导致充电不均衡。这种不均衡主要来自三个方面:制造工艺差异(5%容量公差)、温度梯度(高温端电池衰减更快)、循环…

阅读更多
EM3080-W解码芯片与TM4C129ENCPDT微控制器技术解析
2026/7/8 0:01:06

EM3080-W解码芯片与TM4C129ENCPDT微控制器技术解析

1. EM3080-W解码芯片与TM4C129ENCPDT微控制器的技术特性解析EM3080-W作为专业级条码解码芯片,其核心优势在于采用了双核DSP架构。主处理核心运行频率高达120MHz,能够实时处理1280800分辨率的图像数据,而辅助协处理器则专门优化了27种一维/二维…

阅读更多
Windows HEIC缩略图预览:3步解决iPhone照片在Windows中的显示难题
2026/7/8 1:01:06

Windows HEIC缩略图预览:3步解决iPhone照片在Windows中的显示难题

Windows HEIC缩略图预览:3步解决iPhone照片在Windows中的显示难题 【免费下载链接】windows-heic-thumbnails Enable Windows Explorer to display thumbnails for HEIC/HEIF files 项目地址: https://gitcode.com/gh_mirrors/wi/windows-heic-thumbnails 你…

阅读更多
B站视频下载终极指南:三步获取大会员4K和充电专属内容
2026/7/8 1:01:06

B站视频下载终极指南:三步获取大会员4K和充电专属内容

B站视频下载终极指南:三步获取大会员4K和充电专属内容 【免费下载链接】bilibili-downloader B站视频下载,支持下载大会员清晰度4K,持续更新中 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-downloader B站视频下载工具是一…

阅读更多
瑞德克斯平台:把合规意识做扎实,新手更容易感受到的标准
2026/7/8 1:01:06

瑞德克斯平台:把合规意识做扎实,新手更容易感受到的标准

在外汇行业语境里,表达越清晰、信息越透明,越容易建立稳定预期。在瑞德克斯平台的外汇服务中,从公开信息与使用体验出发,梳理其更值得肯定的能力点与细节表现。外汇相关平台的价值,体现在长期一致性与信息呈现的细致程…

阅读更多
wushowhide.diagcab 工具实战:3步屏蔽Windows 11自动更新AMD显卡驱动
2026/7/8 1:01:06

wushowhide.diagcab 工具实战:3步屏蔽Windows 11自动更新AMD显卡驱动

彻底解决Windows 11自动更新覆盖AMD显卡驱动的终极方案 对于使用AMD显卡的Windows 11用户来说,系统自动更新覆盖显卡驱动是一个常见且令人头疼的问题。这不仅会导致AMD Software控制面板无法正常打开,还可能引发游戏性能下降、显示异常等问题。本文将详…

阅读更多
【算法日记 17】LeetCode 11. 盛最多水的容器:双指针与贪心思维的完美碰撞
2026/7/8 1:01:06

【算法日记 17】LeetCode 11. 盛最多水的容器:双指针与贪心思维的完美碰撞

📍 题目背景今天我们来啃一块算法面试中的硬骨头,也是极其经典的双指针大题:[11. 盛最多水的容器]。 这道题的官方描述有很多“坐标轴”、“垂线”之类的数学术语,很多新手一看就晕了。但其实,我们完全可以把它当成一个…

阅读更多
VOC/COCO/YOLO 3种格式互转实战:Python脚本实现80%代码复用
2026/7/8 0:01:06

VOC/COCO/YOLO 3种格式互转实战:Python脚本实现80%代码复用

VOC/COCO/YOLO 3种格式互转实战:Python脚本实现80%代码复用 在计算机视觉项目中,数据格式转换是算法工程师和数据工程师的日常痛点。当你需要将PASCAL VOC格式的数据集迁移到YOLOv7训练框架,或是将COCO格式的标注转换为轻量化的TXT格式时&…

阅读更多
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御
2026/7/7 2:21:40

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

阅读更多
3步彻底解决Windows右键菜单混乱问题:ContextMenuManager使用全攻略
2026/7/7 22:39:42

3步彻底解决Windows右键菜单混乱问题:ContextMenuManager使用全攻略

3步彻底解决Windows右键菜单混乱问题:ContextMenuManager使用全攻略 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 你是否曾为Windows右键菜单中那些…

阅读更多
GXDE OS下Wayland兼容性实战:从deepin-mutter原理到VMware Tools修复
2026/7/7 22:28:33

GXDE OS下Wayland兼容性实战:从deepin-mutter原理到VMware Tools修复

如果你正在用 GXDE OS 或者任何基于 Deepin 的发行版,并且遇到了“检测到窗口系统采用 Wayland 协议,程序即将退出”这类弹窗,或者发现 VMware Tools 在 Ubuntu 24.04 这类默认 Wayland 的系统上启动失败,那这篇文章就是为你准备的…

阅读更多
A股股指期货:全维度解析(多表格结构化完整版)
2026/7/8 0:01:06

A股股指期货:全维度解析(多表格结构化完整版)

一、基础定义与核心本质股指期货全称股票价格指数期货,是中国金融期货交易所(中金所)上市的标准化金融期货合约,交易标的为 A 股大盘指数,约定未来特定时间按约定价格现金交割指数涨跌差价,不交割一篮子股票…

阅读更多
iOS越狱新手指南:从困惑到掌控,3天解锁iPhone无限潜能的真实故事
2026/7/8 0:01:06

iOS越狱新手指南:从困惑到掌控,3天解锁iPhone无限潜能的真实故事

iOS越狱新手指南:从困惑到掌控,3天解锁iPhone无限潜能的真实故事 【免费下载链接】Jailbreak iOS 26.4 - 26, 17 - 17.7.5 & iOS 18 - 18.7.3 Jailbreak Tools, Cydia/Sileo/Zebra Tweaks & Jailbreak News Updates || AI Jailbreak Finder &…

阅读更多
EM3080-W解码芯片与TM4C129ENCPDT微控制器技术解析
2026/7/8 0:01:06

EM3080-W解码芯片与TM4C129ENCPDT微控制器技术解析

1. EM3080-W解码芯片与TM4C129ENCPDT微控制器的技术特性解析EM3080-W作为专业级条码解码芯片,其核心优势在于采用了双核DSP架构。主处理核心运行频率高达120MHz,能够实时处理1280800分辨率的图像数据,而辅助协处理器则专门优化了27种一维/二维…

阅读更多
基于Dify与DeepSeek构建私有知识库问答系统实战指南
2026/7/7 14:57:49

基于Dify与DeepSeek构建私有知识库问答系统实战指南

在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…

阅读更多
FAE放射组学分析工具:医学影像特征探索的完整解决方案
2026/7/7 9:58:00

FAE放射组学分析工具:医学影像特征探索的完整解决方案

FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE 你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…

阅读更多
DesktopNaotu:你的终极离线思维导图解决方案,告别网络依赖!
2026/7/7 9:58:00

DesktopNaotu:你的终极离线思维导图解决方案,告别网络依赖!

DesktopNaotu:你的终极离线思维导图解决方案,告别网络依赖! 【免费下载链接】DesktopNaotu 桌面版脑图 (百度脑图离线版,思维导图) 跨平台支持 Windows/Linux/Mac OS. (A cross-platform multilingual Mind Map Tool) 项目地址:…

阅读更多