力扣 - 11. 盛最多水的容器

LeetCode - 11.盛最多水的容器 此时容器的底是最大的,接下来随着指针向内移动,会造成容器的底变小,在这种情况下想要让容器盛水变多,就只有在容器的高上下功夫。这种情况下我们想要让指针移动后的容器面积增大,就要使移动后的容器的高尽量大,所以我们选择指针所指的高较小的那个指针进行移动,这样做可以保留较高柱子的边界,同时增加找到更高柱子并提升容器高度的可能性。利用双指针的思想,定义一个left和reght,left指向首部,right指向尾部,计算当前两个指针所对应的高度构成容器的体积。持续进行容积的计算,并根据上述逻辑移动指针,直到。 阅读详情

题目

盛最多水的容器

思路1(暴力破解)

  • 迭代每两个组合
  • 找到最大值并输出

题解

class Solution {
    public int maxArea(int[] height) {
        int ans= 0;
        for (int i = 0; i < height.length - 1; i++) {
            for (int j = i + 1; j < height.length; j++) {
                // 得到最都短的垂直线
                int min = Math.min(height[i], height[j]);
                // 计算最大的容量
                ans= Math.max(ans, min * (j - i));
            }
        }
        return ans;
    }
}

复杂度分析

  • 时间复杂度:O(N²)
  • 空间复杂度:O(1)

思路2(双指针)

  • 从两边开始向内移动,计算两边组合水容量
  • 每次比较只移动短边,等长移动任意一边,当两边重合时结束

题解

public class Solution {
    public int maxArea(int[] height) {
        int l = 0, r = height.length - 1;
        int ans = 0;
        while (l < r) {
            // 计算两边组合的水容量
            int area = Math.min(height[l], height[r]) * (r - l);
            // 取较大一方
            ans = Math.max(ans, area);
            // 移动短边下标,等长则移动左边
            if (height[l] <= height[r]) {
                ++l;
            }
            else {
                --r;
            }
        }
        return ans;
    }
}

总结

如果我们移动数字较大的那个指针,那么前者「两个指针指向的数字中较小值」不会增加,后者「指针之间的距离」会减小,那么这个乘积会减小。
因此,我们移动数字较大的那个指针是不合理的。因此,我们移动 数字较小的那个指针。

复杂度分析

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

相关推荐

【中等】力扣算法题解析LeetCode11:盛最多水的容器

采用双指针法高效求解容器盛水问题。初始化左右指针分别指向数组两端,计算当前容量并更新最大值。关键策略是移动高度较小的指针,以寻找潜在更大容量的组合。算法时间复杂度为O(n),空间复杂度O(1)。Java实现通过循环比较和指针移动,最终返回最大储水量。

ylumwd的博客 576

C语言力扣第十一题之求水桶最大容量。(两种方法)

给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是(i, 0) 和(i, height[i]) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。说明:你不能倾斜容器。示例 1:输入:[1, 8, 6, 2, 5, 4, 8, 3, 7] 输出:49 解释:图中垂直线代表输入数组[1, 8, 6, 2, 5, 4, 8, 3, 7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。示例 2:输入:height

欢迎交流! 954

EMGPro 肌肉电手势识别手环传感器

EMG手势识别技术需要进行多方面的工作,包括传感器的设计和布局、EMG信号的采集和预处理、特征提取和分类等。通过对采集到的信号进行特征提取和分类,可以将手势信号与预定义的手势模型进行匹配,从而实现手势识别和控制。通过使用EMG手势识别技术,用户可以更加自由地操纵设备,使得我们的交互方式更加智能和自然。EMG手势识别是利用EMG信号测量肌肉运动的实时性和高精度性,采用机器学习等技术进行数据处理和分析,并将其应用于手势识别领域的一种技术。

m0_68593468的博客 1382

力扣【LeetCode】—— 11. 盛最多水的容器【java】

题目地址:https://leetcode-cn.com/problems/container-with-most-water/ 题目:  给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 说明:  不能倾斜容器。 示例: 解法一(暴力求解):  思路:遍历计算最大值,两层循环,选中一条垂直线,然后根据这

眉头的骰 888

基于车牌识别的停车收费系统的设计与实现(源码+开题)

本系统(程序源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景: 随着城市化进程的加速和汽车保有量的增加,停车难成为了一个普遍存在的问题。传统的停车收费方式存在着效率低下、管理混乱等问题。因此,开发一款基于车牌识别的停车收费系统具有重要的现实意义。研究意义: 基于车牌识别的停车收费系统可以有效地解决传统停车收费方式在效率和准确性方面的问题,提高停车服务的效率和质量。

迟限程序设计 1391

SAP面试全过程(已拿offer)

周五打电话给我说过了SAP第一轮面试,第二轮要在下周四北京,这几天终于体会到了什么叫做重压下的感觉,越复习越虚,看别人的面经都感觉卧槽这问题也巨难了吧...连去北京可以见妹子这种事情都感觉一点心情都没有。面前准备固然是要有的,但关键是平时就要有料,多想想自己做的项目。当作一个给自己的提醒吧!

cloudray8580的专栏 4万+

11. 盛最多水的容器 - 力扣(LeetCode)

解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。因为 height[left] == height[right],right 减少到 5。因为 height[left] > height[right],right 减少到 7。因为 height[left] > height[right],right 减少到 4。因为 height[left] > height[right],right 减少到 1。面积 = min(1, 7) * 8 = 1 * 8 = 8。

q1111111da的博客 887

别让你的URDF模型在Gazebo里‘躺平’:手把手教你配置libgazebo_ros_diff_drive插件让两轮小车动起来

本文详细解析了如何在Gazebo中配置libgazebo_ros_diff_drive插件,使两轮小车模型实现动态仿真。从URDF模型到传动装置,再到差速驱动插件的精细调参,手把手教你解决机器人‘躺平’问题,提升ROS1与Gazebo仿真的实战能力。

weixin_42552716的博客 333

【LeetCode力扣】11. 盛最多水的容器 (中等)

这道题最优的方法就是用双指针,我们可以用指针left和指针right分别指向数组height[ ]的第一个数和最后一个数

m0_65277261的博客 898

微型纵向加密在新能源场站中的实战部署与运维避坑指南

本文详细解析了微型纵向加密在新能源场站中的实战部署与运维技巧。通过国密算法SM4实现数据加密,确保新能源场站通信安全,同时提供非侵入式部署方案和运维避坑指南,帮助提升网络稳定性和运维效率。

weixin_30505225的博客 595

Jenkins自动化部署服务到Kubernetes环境

通过Jenkins实现自动化部署可以大大提高软件交付的效率和质量。本文介绍的部署流程涵盖了从代码编译、Maven依赖管理、Docker镜像构建到Kubernetes部署的完整流程,并提供了通知机制以便及时了解部署状态。特别需要注意的是Maven与私服的配置,这是确保构建过程能够正常访问依赖包的关键。通过Jenkins的凭据管理功能,可以安全地管理私服的认证信息,避免敏感信息泄露。在实际应用中,您可能需要根据具体的项目需求和环境特点调整部署脚本。

探索云原生与智能化驱动下的安全运维新范式。关注DevSecOps、可观测性、AIOps等前沿领域,与您共赴技术前沿。 527

【力扣LeetCode】11 盛最多水的容器

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

Jiewang的博客 306

【软件系统架构】系列六: SysML(系统建模语言)

SysML(系统建模语言)是OMG组织基于UML扩展的专用建模语言,用于支持复杂系统全生命周期建模。它包含9类标准图,核心建模元素包括块(Block)、端口接口、需求和约束等。与UML相比,SysML更适用于软硬件结合的复杂系统建模。作为MBSE的核心工具,SysML通过结构图、行为图、需求图和参数图实现系统设计、需求追踪和性能验证。虽然面临学习门槛高、工具成本高等挑战,但随着AI融合和国产化替代趋势,SysML在航空航天、汽车电子等领域的应用日益广泛。SysML v2将简化语法并提升互操作性,推动系统工程

moton2017的博客 2382

力扣LeetCode第11题盛最多水的容器

力扣LeetCode第11题盛最多水的容器

weixin_44061444的博客 784

探索gtwr of mgtwr in python

代码】探索gtwr of GWmodel in python。

m0_46268055的博客 3388

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

LeetCode 11. 盛最多水的容器

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

grq的博客 1880

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

JavaScript实现 盛最多水的容器--力扣(leetcode 11)

目录 1 问题 2 输入输出 3 解法 1)暴力法 2)双指针方法 4 代码 1 问题 https://leetcode-cn.com/problems/container-with-most-water/ 给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点(i,ai) 。在坐标内画 n 条垂直线,垂直线 i的两个端点分别为(i,ai) 和 (i, 0)。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水 说明:你不能倾斜容器,且n的值...

bailizx 695

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

LeetCode(力扣)第11题:盛最多水的容器(C语言版)

摘要:本文详细解析了如何使用C语言高效解决"盛最多水容器"问题。通过双指针法(Two Pointers Technique),在O(n)时间内找到最大面积:初始化左右指针,计算当前面积并移动较短的指针,同时更新最大面积。关键点在于移动短边可能获得更高高度,而避免不必要的计算。C语言实现注重数组直接访问、变量缓存等优化,确保高效性。测试用例验证了算法的正确性,适用于大规模数据。该方法体现了贪心策略和C语言底层优化的结合,具有O(n)时间复杂度和O(1)空间复杂度。

weixin_74345888的博客 1886

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

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

weixin_46838716的博客 1229

leetcode11盛最多水的容器

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

weixin_43683432的博客 1186

Leetcode 11. 盛最多水的容器

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

珍惜 8818

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

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

热爱C++和golang的学生 1387

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的博客 1106

11. 盛最多水的容器【 力扣(LeetCode) 】

给定一个长度为 n 的整数数组 height。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i])。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。说明:你不能倾斜容器。

yyh520025的博客 781

【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]) 。 找

虚幻私塾 1823

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

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

qq_40263592的博客 1177
上一篇: Shiro学习_02(认证)
下一篇: 二元运算符
hanlin-hl
博客等级 码龄8年 3粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hanlin-hl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值