盛最多水的容器

LeetCode011——盛最多水的容器 我的LeetCode代码仓:https://github.com/617076674/LeetCode 原题链接:https://leetcode-cn.com/problems/container-with-most-water/description/ 题目描述: 知识点:对撞双指针 思路一:暴力解法,双重循环 这个问题本质上是一个组合问题,在一个数组中选取两个元素使得某个值... 阅读详情

题目:

给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。

找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。

返回容器可以储存的最大水量。

说明:你不能倾斜容器。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/container-with-most-water
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处

自己的解题思路:

1.首先,那肯定暴力解啊,两个for搞定,一运行,超时, 内心那个有苦说不出啊(代码就跳过了,这个各位彦祖肯定可以的对吧)

2.那问题来了,怎么解。想了想,双指针

class Solution {
public:
    int maxArea(vector<int>& height) {
        int size = height.size();
        int left=0, right=size-1;
        int ans = 0;
        while(left < right){
            ans = max(ans, (right-left)*min(height[left], height[right]));
            if(height[left] > height[right]) --right;
            else ++left;
        }
        return ans;
    }
};

就是一开始两个指针一个指向开头一个指向结尾,此时容器的底是最大的,接下来随着指针向内移动,会造成容器的底变小,在这种情况下想要让容器盛水变多,就只有在容器的高上下功夫。 那我们该如何决策哪个指针移动呢?我们能够发现不管是左指针向右移动一位,还是右指针向左移动一位,容器的底都是一样的,都比原来减少了 1。这种情况下我们想要让指针移动后的容器面积增大,就要使移动后的容器的高尽量大,所以我们选择指针所指的高较小的那个指针进行移动,这样我们就保留了容器较高的那条边,放弃了较小的那条边,以获得有更高的边的机会。

那么可能会考虑的一个问题就是,到底能不能满足所有的情况那?(不要问我为什么会想到,因为我干过/狗头)

看了看力扣的大佬解析,确实满足的,在这里因为小弟时间有限,就不多言了,把链接附上,大家去源文章看吧:力扣icon-default.png?t=M85Bhttps://leetcode.cn/problems/container-with-most-water/solution/on-shuang-zhi-zhen-jie-fa-li-jie-zheng-que-xing-tu/

 

算法解密:盛最多水的容器问题全解析 通过对“盛最多水的容器”问题的暴力解法和双指针优化解法的详细讲解与代码实现,我们深刻体会到不同算法思路在解决问题时的差异。双指针法在降低时间复杂度方面展现出了巨大优势。在日常算法学习和实际应用中,我们要善于从简单解法出发,不断探索优化方案,提升代码的效率。希望这篇博客能助力大家在算法学习的道路上稳步前行,攻克更多有趣又富有挑战的算法难题。 阅读详情

相关推荐

长短期记忆网络(Long Short-Term Memory networks, LSTM)

如何简单的理解LSTM——其实没有那么复杂:

weixin_39910711的博客 2万+

Leetcode 11. 盛最多水的容器 (详细解析加JAVA代码)

首先明确一下容器容量的计算公式,这里简化为计算两条垂线和x轴围成的长方形面积。 根据短板效应:面积等于两条垂线中短的那一条 乘以 两条垂线的x轴距离。 即:S(i,j) = min(h[i],h[j]) × (j−i) (i,j分别为两条垂线的x轴坐标) 其次,我们要考虑怎么找到最大的面积? 肯定是通过移动指针选择不同的柱子来完成: 我们定义左右指针,初始分别指向最左边的柱子和最右边的柱子。每次移动的时候:都将高度低的柱子指针向内移动一格。直至两者相遇,比较所有面积,找到最大值。

qq_50438521的博客 1137

波动性GARCH模型与波动率预测(代码+结果分析)

本文介绍的ARCH、GARCH模型可以刻画出随时间变化的条件异方差。

celiaweiwei的博客 2万+

LeetCode 11.盛最多水的容器

题目: 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明:你不能倾斜容器。 示例: 题目解析:实质为求两柱体围成的最大矩形面积 思路讲解: 1.暴力求解:两个for循环遍历数组,求出所有面积情况,取最大值。(可以但不推荐,该方法效率较低) * 2.双指针:两指针分别指向数组左右元素,求出..

blue_jun_的博客 1076

海康WEB3.3控件开发包 V3.3 前端vue项目调用实时监控画面

本需求的完成离不开后端将设备映射到公网, 以及前端单独部署demo页面这个思路的转变。

hero8011的博客 1万+

Zigbee开发环境搭建:从驱动安装到程序烧录全指南

本文提供了一份详尽的Zigbee开发环境搭建全指南,涵盖从驱动安装到程序烧录的完整流程。重点介绍了使用SmartRF Flash Programmer和仿真器进行程序下载的关键步骤,并详细说明了USB转串口驱动的配置方法,帮助开发者快速构建稳定的Zigbee开发基础。

weixin_29195217的博客 394

【每日一题】- 盛最多水的容器

盛最多水的容器给定一个长度为 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。

xuedong_1989的博客 405

TK抓包协议分析:So层逆向

第三个参数是一个回调函数,这里他的返回值1表示成功,0表示失败,那我们手动把他Hook为0,让他不支持quic协议,实现降级。等,我们是为了解决抓包问题,那很有可能是在net目录下(network),那来搜索一下。开了抓包以后APP直接是网络无连接了,并且抓到的请求也是不正常的,下面我们就开始定位。看了半天感觉也没啥有用的东西,那下面我们整理一下已经有信息,来猜测一下,后续怎么进行。那可以猜测,我们真正需要Hook的那个函数也有可能是这样加载的,可以字符串搜索一下。

2503_90751938的博客 3418

【Leetcode面试常见题目题解】4. 盛最多水的容器

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

优快云GuoYuying的博客 940

深入解析SerDes系统中的时钟数据恢复电路(CDR)——基于Cadence的PLL/Bang-Bang/PS-PI架构实现与仿真

本文深入解析SerDes系统中的时钟数据恢复电路(CDR),重点探讨基于Cadence平台的PLL、Bang-Bang和PS-PI三种架构的实现与仿真。通过详细的技术对比和工程实践案例,揭示CDR在高速串行通信中的关键作用,并提供TSMC 28nm工艺下的优化策略与故障排查经验,助力工程师应对10Gbps以上SerDes设计挑战。

weixin_29202687的博客 249

OpenBCI脑电实验避坑指南:如何用Python准确捕捉P300信号

本文详细介绍了使用OpenBCI和Python进行P300脑电信号实验的避坑指南,包括电极贴放、信号采集、信号处理和数据分析等关键步骤。通过实战经验和代码示例,帮助研究者避开常见陷阱,提高P300信号捕捉的准确率,适用于脑机接口和神经科学研究。

weixin_30316097的博客 551

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

26版SPSS操作教程(高级教程第十章)

#大道之行,在于坚持 #本期内容:二分类Logistic回归模型 #由于导师最近布置了学习SPSS这款软件的任务,因此想来平台和大家一起交流下学习经验,这期推送内容接上一次高级教程第九章的学习笔记,希望能得到一些指正和帮助~

你好! 1599

算法 盛最多水的容器

本文将从基础概念出发,逐步深入探讨“盛最多水的容器”问题的不同解决方案,并通过具体的代码示例来展示如何实现这些算法。通过上述讨论,我们可以看到,“盛最多水的容器”问题不仅是算法技巧的体现,更是编程思维和工程实践相结合的结果。这里的“水”的量是由较短的那个线段决定的,因为水不会溢出。然而,在这个特定的问题中,由于每次决策都依赖于当前状态和下一个状态的关系,因此动态规划的应用并不直观。希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。

一个做过前端开发的产品经理,经历过睿智产品的折磨导致脱发之后,励志要翻身"农奴"把歌唱,一边打入敌人内部一边持续提升自己,为我们广大开发同胞谋福祉,坚决抵制睿智产品折磨我们码农兄弟! 1086

pscad IEEE标准系统搭建说明

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

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Python求解盛水最多的容器

题目描述 给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 说明:你不能倾斜容器。 LeetCode原题地址:https://leetcode-cn.com/problems/container-with-most-water/ 测试用例 示例 1 输入:[1,8,6,2,5,4,8,3,7] 输出:4

修炼之路 1050

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

【LeetCode】 盛最多水的容器

本文介绍了盛水容器问题的解法。题目要求在给定高度数组中找出两条线,使其与x轴构成的容器能容纳最多水。通过分析发现,暴力枚举法时间复杂度为O(n^2)会超时。优化解法采用双指针法,从数组两端开始,每次移动较短边的指针,保留可能更大的容积区域,直到两指针相遇,时间复杂度降为O(n)。文中给出了C++代码实现,通过双指针动态计算并更新最大容积值,最终得到最优解。

2501_90654211的博客 694

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

【算法】双指针求解盛最多水的容器

对应 力扣11.盛最多水的容器,教你使用双指针来计算容器最多承载的水

做技术人 · 产优质博客 · 找好工作 1482

【力扣刷题实战】盛最多水的容器

文章目录目录力扣题目: 盛最多水的容器题目描述解题思路问题理解算法选择具体思路解题要点完整代码(C++)兄弟们共勉 !!! 每篇前言原题链接:11. 盛最多水的容器 - 力扣(LeetCode)给定一个长度为 的整数数组 。有 条垂线,第 条线的两个端点是 和 。找出其中的两条线,使得它们与 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。说明:你不能倾斜容器。示例 1: 输入:[1,8,6,2,5,4,8,3,7] 输出:49 解释:图中垂直线代表输入数组 [1,8,6,2,

2401_85548793的博客 1087

盛最多水的容器 - 中等难度

动态规划 - 直方图的水量 - 困难-优快云博客。

ElseWhereR的博客 1543

【盛最多水的容器】

①思考:要想让盛水量最大,无非就两点:底最长、高最长(木桶效应)。 ②要想让底最长,我们就要一开始取两头的柱子(采用双指针,left指针一开始为0,right指针一开始为最大下标)。 ③要想让高最长,我们每次就要选中高度偏低的那根柱子往中间移动。

casually的博客 507

LeetCode-双指针-盛最多水的容器

双指针法解决LeetCode中的“盛最多水的容器”问题

Wneosy的博客 1071

【LeetCode:11. 盛最多水的容器 | 双指针】

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

Coder_ljw的博客 1079

算法小练——盛最多水的容器

title: 算法小练——盛最多水的容器 date: 2019-12-01 18:27:55 categories: Algorithms tags: medium 盛最多水的容器 描述 给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它...

李亚飞的博客 2913
上一篇: 分享记录自己的C++作业 实验二 类与对象(1)
下一篇: 【无标题】
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值