*leetcode-11-盛最多水的容器-medium

力扣第十一题-盛最多水的容器 前言 力扣第十一题 盛最多水的容器 如下所示: 一、思路 先理解一下题目的意思,就是求一个最大的面积。 **严谨一点,用数学中的思想来表示一下: ** 假设数组为 a1,a2,...,an ,现有 ai、aj(i < j) 两个数,求 Min(ai, aj) * abs(i - j) Min(ai, aj) * (j - i) 中 j - i 表示容器底边长,Min(ai, aj) 表示容器的高 这一题需要想明白一点,怎么样才能面积最大呢? 其实很简单,两块板子相距越远,板子越高,得到的面积也就会越 阅读详情

题目描述

给定 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

  • 暴力,超时代码,复杂度0n2
class Solution {
public:
    int maxArea(vector<int>& height) {
        int maxx = -999;
        for(int i=0;i<height.size()-1;i++){
            for(int j=i+1;j<height.size();j++){
                maxx = max(maxx,(j-i)*min(height[i],height[j]));
            }
        }
        return maxx;
    }
};

2

  • 双指针法
  • 这种方法如何工作?

这种方法背后的思路在于,两线段之间形成的区域总是会受到其中较短那条长度的限制。此外,两线段距离越远,得到的面积就越大。

我们在由线段长度构成的数组中使用两个指针,一个放在开始,一个置于末尾。 此外,我们会使用变量 maxareamaxarea 来持续存储到目前为止所获得的最大面积。 在每一步中,我们会找出指针所指向的两条线段形成的区域,更新 maxareamaxarea,并将指向较短线段的指针向较长线段那端移动一步

最初我们考虑由最外围两条线段构成的区域。现在,为了使面积最大化,我们需要考虑更长的两条线段之间的区域。如果我们试图将指向较长线段的指针向内侧移动,矩形区域的面积将受限于较短的线段而不会获得任何增加。但是,在同样的条件下,移动指向较短线段的指针尽管造成了矩形宽度的减小,但却可能会有助于面积的增大。因为移动较短线段的指针会得到一条相对较长的线段,这可以克服由宽度减小而引起的面积减小。

执行用时 :
12 ms, 在所有 cpp 提交中击败了99.36%的用户
内存消耗 :9.8 MB, 在所有 cpp 提交中击败了77.76%的用户

class Solution {
public:
    int maxArea(vector<int>& height) {
        int maxx = -9999;
        int left = 0;
        int right = height.size()-1;
        while(right>left){
            maxx = max(maxx,(right-left)*min(height[left],height[right]));
            if(height[left]<height[right]){
                left++;
            }else{
                right--;
            }
        }
        return maxx;
    }
};
【CSP-J/S初赛知识点整理】 CSP-J/S初赛知识点整理 阅读详情

相关推荐

泰森多面体Voronoi 3D-V5.0 功能介绍

Abaqus Voronoi3D

qq_34840441的博客 3364

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

力扣11题:盛水最多的容器

童一的博客 522

【Python程序开发】湖南省职业院校技能大赛python程序开发赛项样题二

【Python程序开发】湖南省职业院校技能大赛python程序开发赛项样题二

况老师话竞赛&blog 2197

leetcode刷题记第11题解法(python解析)

leetcode刷题记--> 11题解法(python解析)题目定义解法一(暴力解法)解法二 (双下标法) 题目定义 给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 说明:你不能倾斜容...

qq_42274068的博客 524

接口自动化测试如何做?测试老鸟总结,接口测试数据构造大全......

接口参数的数据获取:接口文档:接口文档通常会包含接口需要的请求参数和返回结果的格式、类型等信息;测试用例设计:根据测试用例设计的需求,可以确定需要哪些请求参数以及期望的响应结果;业务数据:从实际业务场景中获取数据,以确保测试数据的真实性和代表性;数据库:从数据库中获取数据,作为接口测试的输入参数;随机数据生成器:通过随机数据生成器生成测试数据,以增加测试用例的多样性和覆盖率。在选择数据来源时,需要根据具体情况进行选择。如果有可靠的接口文档,可以直接从文档中获取请求参数和预期结果;

798

从零开始训练一个简单的CLIP

到这里,你已经基本了解了CLIP的基本原理,并且能够自己动手训练一个简单的CLIP模型。整体上来看,代码比较简单,但是已经基本覆盖到CLIP的整体训练流程了。另外,如果需要实际的落地,建议还是使用openclip等更加成熟的框架。欢迎关注github:https://github.com/taishan1994。

u012374012的专栏 2912

力扣热门100题——盛水最多的容器(暴力解法,双指针,贪心)

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

humor2020的博客 5803

Ubuntu24.04LTS上Ollama GPU加速配置指南:从驱动安装到多卡均衡负载

本文详细介绍了在Ubuntu24.04LTS系统上配置Ollama GPU加速的完整指南,包括NVIDIA驱动安装、CUDA Toolkit配置、Ollama在线与离线安装方法,以及多GPU负载均衡优化策略。通过实战案例和性能调优建议,帮助开发者充分利用硬件资源提升大型语言模型的运行效率。

weixin_29255731的博客 760

【力扣算法】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]。在此情况下,容器能够容纳...

ZeromaXHe的博客 575

PCL 计算点云法向量并显示【2026最新版】

PCL计算法向量并显示,用OMP进行计算加速以及法线定向的深层次理解、操作。博客长期更新,本文最近更新时间为:2026年1月28日。

点云侠的博客 32万+

Vue2 - 详细实现网页 “开启录音并生成音频文件,上传到服务器效果“,浏览器录制外部音频调用麦克风并传到后端,兼容全部浏览器、支持 PC 网页或手机 H5 网页、可本地播放试听(详细示例运行代码)

vue,nuxt,uniapp,网页网站,麦克风,网页录音,MediaRecorder,浏览器录音,移动端h5网页,手机端录音,web网页录音,recorder-core官方文档,Recorder,非https怎么本地录音,录音报错失败,录音后怎么播放音频,如何获取录音mp3文件,解决一直不提示麦克风权限,小白详细教程,实时录音,调用浏览器麦克风录音,浏览器不兼容,wav,mp3,vue怎么实现网页录音呢,vue2网页录音并上传到服务器,web如何实现录制音频,vue网页录音,音频录制播放和上传服务器,vu

🏆 前端领域优质创作者 6003

【优选算法】双指针 -- 快乐数 和 盛最多水的容器

快乐数(medium) 编写⼀个算法来判断⼀个数 n 是不是快乐数。 盛最多水的容器 给定⼀个⻓度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的⽔。 返回容器可以储存的最⼤⽔量。 说明:你不能倾斜容器。

weixin_65186652的博客 3739

CSP - 2024 普及组初赛试题及解析

CSP - 2024 普及组初赛试题及解析

QD_Jason的博客 2911

leetcode 11. 盛最多水的容器 medium

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

speargod的博客 212

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

LeetCode11-盛最多水的容器

/* * @lc app=leetcode.cn id=11 lang=cpp * * [11] 盛最多水的容器 * * https://leetcode-cn.com/problems/container-with-most-water/description/ * * algorithms * Medium (52.87%) * Total Accepted: 29.7...

Sundrops的专栏 367

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

刷爆力扣之盛最多水的容器

力扣爆刷记录 11 检查数组对是否可以被 k 整除

优质后端技术知识记录 486

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

#LeetCode#Problem 11. Container With Most Water-盛最多水的容器(java版)

读题 题目难度:medium 给定一个非负整数数组,画柱状图。以数组第 i , j 位( i &amp;lt; j )对应的数值为桶壁,加上横轴形成一个盛水的容器。如图所示,水面的高度 =第 i , j 位两位对应数值中的最小值,宽度等于( j - i )。 题目11: 思路 从易到难,先用暴力的方法做一次。 暴力解决 一开始没有什么思路,先写了一个暴力的方法解决一下。用两层循环,依次比较,求出每次容器...

Sunshine94warm的博客 453

LeetCode11. 盛最多水的容器

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

迪迦 • 奥特曼 343

LeetCode 011. 盛最多水的容器 - 双指针与几何直觉详解

题目描述:给定一个非负整数数组 height,其中每个元素表示坐标 i 处垂直线段的高度。选择两条线段 i 和 j(i < j),与 x 轴共同组成一个容器,其能容纳的水量为 min(height[i], height[j]) × (j - i)。请返回可以容纳的最大水量。原题链接:https://leetcode.cn/problems/container-with-most-water/难度等级:Medium相关标签:数组、双指针、贪心、数学、几何直觉。

m0_52114506的博客 1023

【LeetCode】 11. Container With Most Water 盛最多水的容器(Medium)(JAVA)

【LeetCode】 11. Container With Most Water 盛最多水的容器(Medium)(JAVA) 题目地址: https://leetcode.com/problems/container-with-most-water/ 题目描述: Given n non-negative integers a1, a2, …, an , where each represents...

qq_16927853的博客 169

盛最多水的容器、有效三角形的个数(medium)----双指针方法解决问题

如果改变右边边界,无论右边边界移动到哪都,新的水面高度都不会超过左边界,(也就是不会超过现在容器的大小),但是由于容器的宽度变小,所以容器的容积一定变小。根据这个条件我们把第三条边可以定为最长的那一条,如果其中俩个边的和能大于最长的这一条边,那么这三条边,都满足任意俩边之和大于第三边。:通过使用两个指针分别指向数组的两端,可以有效地遍历所有可能的容器组合,而不需要进行两两比较。:总是移动较小的那一边的指针,因为只有这样才能有可能找到更高的柱子,从而增加容器的潜在最大面积。轴共同构成的容器可以容纳最多的水。

m0_75006599的博客 891

【LeetCode 经典题解】盛最多水的容器 —— 双指针法详解

本文详细解析了LeetCode经典题目"盛最多水的容器"的最优解法。题目要求在给定高度数组中找到两条垂线,使其与x轴构成的容器能容纳最多水。通过分析盛水量公式(宽度×较短高度),提出双指针法:初始化左右指针在数组两端,每次移动较短高度的指针以寻找更大盛水量。该方法时间复杂度O(n),空间复杂度O(1),显著优于暴力解法的O(n²)。文章包含完整代码实现、复杂度分析和测试案例,帮助读者掌握双指针法的核心思想及其在区间最值类问题中的应用。

2403_88286597的博客 565

LeetCode第11题——盛最多水的容器(medium)

LeetCode第11题

AryCra_07的博客 624

[leetcode-top100-medium]11.盛水最多的容器,15三数之和

ddd

是安澜啊 1342

leetcode[11][medium]盛最多水的容器

我们可以断定,如果我们保持左指针的位置不变,那么无论右指针在哪里,这个容器的容量都不会超过 x∗t 了。也就是说,这个左指针对应的数不会作为容器的边界了,那么我们就可以丢弃这个位置,将左指针向右移动一个位置。在一开始,双指针指向数组的左右边界,表示数组中所有的位置都可以作为容器的边界。在这之后,我们每次将对应的数字较小的那个指针 往另一个指针的方向移动一个位置,就表示我们认为这个指针不可能再作为容器的边界了。此时的左右指针,就指向了一个新的、规模减少了的问题的数组的左右边界。返回容器可以储存的最大水量。

good good study, day day up ~ 329

力扣11.盛水最多的容器(medium)(双指针)

通过这个规律,我们可以把两层for循环嵌套枚举优化为为双指针从两端开始分别向内枚举遍历,时间复杂度优化为O(n)在记录过程中我们可以定义一个体积最大值max,随时比较以替换max值,当数组遍历完成时,容器的最大体积也就找到了。显然,两个数组下标之差是容器长度,两个数中较小的那个为容器高度,要寻找容器的最大储水量,有两种方法。可见,当右边决定高度的指针不动时,左边指针无论怎么移动,v都会减小。1.下一个数比4大或等于4,那么h不变,w减小->v减小。2.下一个数比4小,那么,h减小,w减小->v减小。

2501_92032664的博客 492
上一篇: leetcode-8-字符串转换整数(atoi)-medium
下一篇: *leetcode-10-正则表达式-hard
Metralix
博客等级 码龄10年 6粉丝 75原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值