11. 盛最多水的容器

LeetCode - 11.盛最多水的容器 此时容器的底是最大的,接下来随着指针向内移动,会造成容器的底变小,在这种情况下想要让容器盛水变多,就只有在容器的高上下功夫。这种情况下我们想要让指针移动后的容器面积增大,就要使移动后的容器的高尽量大,所以我们选择指针所指的高较小的那个指针进行移动,这样做可以保留较高柱子的边界,同时增加找到更高柱子并提升容器高度的可能性。利用双指针的思想,定义一个left和reght,left指向首部,right指向尾部,计算当前两个指针所对应的高度构成容器的体积。持续进行容积的计算,并根据上述逻辑移动指针,直到。 阅读详情
/**
 * 11. 盛最多水的容器
 * @author wsq
 * @date 2020/09/22
	给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。、
	找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。
	
	说明:你不能倾斜容器,且 n的值至少为 2。
	图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。

	示例:
	输入:[1,8,6,2,5,4,8,3,7]
	输出:49
	
	链接:https://leetcode-cn.com/problems/container-with-most-water
 */
package com.wsq.leetcode;

public class MaxArea {
	/**
	 *	移动两个边界中最小值对应的指针
	 *	可以假象,如果移动较大值的指针,那么所盛水的体积只会越来越小
	 * @param height
	 * @return
	 */
    public int maxArea(int[] height) {
    	if(height.length < 2) {
    		return 0;
    	}
    	int ans = 0;
    	int left = 0;
    	int right = height.length - 1;
    	
    	while(left < right) {
    		int tmp = (right - left) * Math.min(height[left], height[right]);
    		if(tmp > ans) {
    			ans = tmp;
    		}
    		// 移动指针
    		if(height[left] <= height[right]) {
    			left++;
    		}else {
    			right--;
    		}
    	}
    	return ans;
    }
    public static void main(String[] args) {
		int[] arr = {1,8,6,2,5,4,8,3,7};
		MaxArea ma = new MaxArea();
		int ans = ma.maxArea(arr);
		System.out.println("最后答案是:" + ans);
	}
}

LeetCode 11 - 盛最多水的容器 LeetCode 11 是一道经典的双指针问题,考察程序设计中的优化方法以及逻辑推导能力。题目核心是找到由两条柱子围成的、最多水的容器。以下是详细解法、变体和快速 AC 总结。给定一个长度为n的数组height,数组中每个元素表示一个高度。每对(i, j)组合能形成一个容器,其容积由两条柱子之间的和要求返回能够容纳最多水的容器的。 阅读详情

相关推荐

LeetCode 第11题:盛最多水的容器

我们通过双指针的方法解决了盛最多水的容器问题。这种方法不仅简洁高效,而且通过移动指针来不断逼近最优解,避免了暴力破解的低效。希望这篇博客能够帮助大家更好地理解和掌握这道题目。下次遇到类似的问题时,别忘了用双指针大法来试试看哦!

Gemini的博客 726

LeetCode 11. 盛最多水的容器

假设最优解的两个值为图中的两条竖线,我们的指针从左右两侧向中间移动,假设现在左边的指针先移动到了最优解的前面的竖线,现在要证明:如果左边指针先到达最优解的边界了的话,右边每次指向竖线的高度都严格小于左边指向的竖线。由此得到的结论是,假设左边先找到了最优解,那么右边的高度必然是严格小于左边界的。木桶原则是说一个水桶无论有多高,它盛水的高度取决于其中最低的那块木板。整个题目可以理解为:最好要早相遇,否则在晚相遇的基础上,每次都要找最好的。本题使用双指针的做法, 指针移动过程中会天然地造成木桶的“底”不断变小。

grq的博客 1882

[亚信线上教学] AX58100: EtherCAT从站设备仿真功能设计教学

什么情况需要开启EtherCAT从站设备仿真功能呢? 一般来说, 当EtherCAT从站产品,不需要使用额外的微控制器介入,或使用不具备EtherCAT从站通讯协议栈的微控制器一同协作的情况下,就必须开启EtherCAT从站设备仿真功能,这样EtherCAT主站才能够正常设置从站设备的工作状态. 亚信AX58100 EtherCAT从站控制芯片的优点 AX58100 EtherCAT从站控制器, 集成2个百兆以太网Phis, 并支持一些额外的控制接口, 例如脉冲宽度调变, 增量, 霍尔编码器, .

allanchou1的专栏 7425

LeetCode高频题11:盛最多水的容器

1)LR从两头往中间凑,一定在考虑a最大的情况下,两根板子尽可能高的最优解先更新给max了 2)当L小,让L探索有没有更高的瓶颈,R也类似,总之保证底边a最大的可能性下,去探索更高的瓶颈,这样算出来的水量是最好的 3)笔试求AC,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。...

weixin_46838716的博客 1230

从示波器波形看懂死区:手把手教你调ST MCU的PWM,避免三相桥直通炸管

本文详细解析了如何通过示波器波形判断PWM死区时间,并手把手教你调整STM32高级定时器寄存器,避免三相逆变桥直通炸管。文章涵盖死区时间的本质与风险、STM32配置详解、示波器调试技巧及FOC系统中的特殊考量,帮助工程师优化电机驱动性能与安全性。

weixin_30315723的博客 735

Jacobi正交多项式在数值分析中的应用与实现

本文深入探讨了Jacobi正交多项式在数值分析中的核心应用与实现。作为最通用的正交多项式族,Jacobi多项式通过参数α和β的调节,可退化为切比雪夫、勒让德等经典多项式,为函数逼近、奇异积分和微分方程求解提供了统一框架。文章重点解析了其在加权高斯积分(高斯-雅可比积分)和谱方法求解微分方程中的关键作用,并提供了基于递归关系和SciPy的稳定高效实现方案,帮助读者掌握这一强大的数值计算工具。

weixin_29306011的博客 246

leetcode11盛最多水的容器

双指针是一种常用的算法技巧,特别适用于数组和链表等线性数据结构。它通过使用两个指针(或索引)来迭代或扫描数据结构,常用于以下几类问题:对撞指针(Two Pointers Technique):两个指针分别从数据结构的两端向中间移动,直到它们相遇。这种方法常用于求解数组中的特定对(例如,两数之和问题、盛最多水的容器问题)。快慢指针(Tortoise and Hare Algorithm):一个指针每次移动一步,另一个指针每次移动两步。这种方法常用于检测链表中的环或找到链表的中间节点。

weixin_43683432的博客 1187

AutoDock Vina 对接计算(大批量)

AutoDock Vina是一种用于计算生物分子之间相互作用的计算工具,主要用于蛋白质和小分子(通常是潜在药物分子)之间的对接研究。它可以用于虚拟筛选、药物设计和生物分子结合位点的预测等多个应用领域。

MurphyStar的博客 1万+

Leetcode 11. 盛最多水的容器

Leetcode 11. 盛最多水的容器1、问题分析2、问题解决3、总结 1、问题分析 题目链接:https://leetcode-cn.com/problems/container-with-most-water/ 具体思路为: 1、分别从左右节点 往中间推,知道找到某个节点的高度 大于等于当前节点的高度 2、如从左往右推 循环结束的地方就是 当前节点高度能够到达的左边最远距离 3、从右往左推 原理类似 最坏的情况一定在当前节点全部停止   代码我已经进行了详细的注释,理解应该没有问题,读者可以作为参

珍惜 8818

glm-4v-9b环境配置全攻略:从CUDA版本冲突到bitsandbytes异常排查(RTX A4000实测)

本文详细介绍了在RTX A4000显卡上配置GLM-4V-9B多模态大模型的完整流程,重点解决CUDA版本冲突和bitsandbytes异常问题。通过4-bit量化技术显著降低显存占用,提供从环境预检到量化部署的实战指南,帮助开发者在有限显存环境下高效运行大模型。

weixin_30369041的博客 407

C语言设计模式全面解析:从理论到28个实战示例

本文系统介绍了23种经典设计模式在C语言中的实现方法。通过结构体、函数指针等技巧,C语言可以优雅地模拟面向对象特性,实现代码复用与解耦。文章分类详解了创建型、结构型、行为型三大类模式,并提供了28个完整代码示例,包括单例、策略、观察者等核心模式的精简实现。这些模式在嵌入式系统、操作系统内核等场景中广泛应用,如状态机、事件驱动等。学习C语言设计模式的关键在于理解模式意图,掌握函数指针和结构体组合等技巧,并在实际项目中灵活运用。本文为C语言开发者提供了全面的设计模式参考指南。

数字人生 364

leetcode11. 盛最多水的容器,双指针法

leetcode11.盛最多水的容器,双指针法

热爱C++和golang的学生 1390

【YOLO】YOLOV5-Seg的Segment模块解析

Segment模块同时输出检测结果和分割掩模,通过轻量级分割头实现实时实例分割

浩瀚之水的专栏 599

【LeetCode】11. 盛最多水的容器

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 11. 盛最多水的容器 知识点:双指针 题目描述 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找

虚幻私塾 1825

Win11 1 月更新黑屏循环故障技术分析与解决方案

2026年1月30日Windows 11更新引发黑屏循环故障,主要影响2018年前出厂、采用MBR分区及特定BIOS固件的设备,尤其对使用经典版Outlook(POP协议)的用户影响显著。故障表现为系统无限重启黑屏,导致数据访问中断。分析表明,问题源于硬件兼容性、分区格式与系统更新的交互冲突。解决方案包括进入安全模式回滚更新、暂停自动更新、升级驱动/BIOS,以及等待微软官方补丁。建议用户更新前评估硬件兼容性并备份数据,企业环境应建立分阶段更新测试机制。该事件为系统更新风险管理提供了重要参考。

博客 1444

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

LeetCode第11题_盛最多水的容器

这是一道经典的双指针题目:理解面积计算规则理解指针移动策略理解为什么这种策略是正确的优化思路:记录最大高度来跳过不必要的计算提前结束条件的判断关键点:双指针的移动策略面积计算的数学原理优化的判断条件。

qq_40263592的博客 1183

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

leetcode11. 盛最多水的容器(java)

有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i])。解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。链接:https://leetcode.cn/problems/container-with-most-water。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。输入:[1,8,6,2,5,4,8,3,7]输入:height = [1,1]说明:你不能倾斜容器。

SP_1024的博客 1107

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Leetcode —— 11.盛最多水的容器

有短板效应,我们容易得到,最多可容纳的水为maxNum = min(height[lk],height[rk]) * (rk-lk);则针对rk的容器体积在此时达到最大,我们就需要去寻找针对lk的容器最大的情况,则必须将rk--,排除rk的情况。这种情况移动之后的容器大小为height[rk]*(rk-1-lk),很容易看出,容器的高没有边,但是长度变小了,容器体积变小。那么lk移动之后的容器大小为height[lk+1]*(rk-lk-1),,则可以得到由边界rk组成的容器在当前状态下是容量最大的。

qq_51058924的博客 563

LeetCode11.盛最多水的容器 JavaScript

LeetCode11.盛最多水的容器 JavaScript 给定n 个非负整数a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画n条垂直线,垂直线i的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 说明:你不能倾斜容器,且n的值至少为2。 图中垂直线代表输入数组 [1,8,6,2,5,4,8,3...

weixin_34270865的博客 317

LeetCode题库解答与分析——#11.盛最多水的容器ContainerWithMostWater

#11 盛最多水的容器 Container With Most Water给定 n 个正整数 a1,a2,...,an,其中每个点的坐标用(i, ai)表示。 画 n 条直线,使得线 i 的两个端点处于(i,ai)和(i,0)处。请找出其中的两条直线,使得他们与 X 轴形成的容器能够装最多的水。Given n non-negative integers a1, a2, ..., an, where...

weixin_38385524的博客 3980

图解leetcode11:盛最多水的容器

这次的题目比较简单而且有意思哦~ leetcode11: 盛最多水的容器 题目描述: 给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点(i,ai) 。在坐标内画 n 条垂直线,垂直线 i的两个端点分别为(i,ai) 和 (i, 0)。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。 说明:你不能倾斜容器,且n的值至少为 2。 题目示例: 输入:[1,8,6,2,5,4,8,3,7] 输出:49解题思路: 假设选中两个点 (i, ai) 和 (...

Monica2333的博客 1637

【双指针】专题:LeetCode 11题解——盛最多水的容器

盛最多水的容器

2401_87255690的博客 461

LeetCode - 11 盛最多水的容器

也就是说 h[R1] * (R1 - L1 + 1) 的结果是肯定大于 h[L] * (R - L + 1) 的,因此这里 L 虽然没有匹配到最优高柱 R1,但是 R1 作为矮柱时的容器肯定比当前 R1 作为高柱时的容器盛水更多。容器内水的容量大小 V,取决于容器两端中的较短柱子h_min,因此为了使得容器内水尽可能的多,我们应该找到距离 h_min 柱子最远的,且高度>= h_min 的另一个柱子。解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。输入:height = [1,1]

优快云 1753

★11. 盛最多水的容器(2种方法)

短板效应,取决于短的板。非常引人深思的一道题

qq_45895217的博客 1280
上一篇: Morris遍历(值得学习的二叉树遍历方法)
下一篇: 501. 二叉搜索树中的众数
Lazy mode
博客等级 码龄10年 13粉丝 311原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值