LeetCode 11—— 盛最多水的容器

阅读目录

    • 1. 题目
    • 2. 解题思路一
    • 3. 代码实现一
    • 4. 解题思路二
    • 5. 代码实现二

1. 题目

2. 解题思路一

暴力法,遍历所有可能的垂线对 ( i , j ) (i, j) (i,j),求取最大面积:

a r e a = m i n ( h [ i ] , h [ j ] ) ∗ ( j − i ) area = min(h[i], h[j]) * (j - i) area=min(h[i],h[j])(ji)

注意到,如果垂线 m m m 在垂线 i i i 的右边,而且 h [ m ] < = h [ i ] h[m] <= h[i] h[m]<=h[i],那么以垂线 m m m 为起始的容器我们可以跳过遍历

为什么呢,假设垂线 m m m 和垂线 n n n 组成的容器可以盛的水最多,那么我们把垂线 m m m 换成垂线 i i i,盛的水肯定会变多。

虽然可以跳过一些循环,代码也通过了测试,但时间复杂度仍然是 O ( n 2 ) O(n^2) O(n2),应该会有更高效的解决办法。

3. 代码实现一

class Solution {
public:int maxArea(vector<int>& height) {int ret = 0;int max_height = 0;for (int i = 0; i < height.size()-1; ++i) {if (height[i] <= max_height) {continue;}max_height = max(max_height, height[i]);for (int j = i+1; j < height.size(); ++j) {int cur_area = min(height[i], height[j]) * (j - i);ret = max(ret, cur_area);}}return ret;}
};

4. 解题思路二

假设垂线对 ( i , j ) (i, j) (i,j) 组成了一个容器,如果这时候有:

h [ i ] < h [ j ] ,那么有, a r e a = h [ i ] ∗ ( j − i ) h[i] < h[j],那么有, area = h[i] * (j - i) h[i]<h[j],那么有,area=h[i](ji)

如果这时候我们让垂线 j j j 往左移动,那么容器的高度不会大于 h [ i ] h[i] h[i],而宽度 < ( j − i ) <(j - i) <(ji) 会变小,容器面积肯定会变小,所以我们只能让垂线 i i i 往右移动。

同理, h [ i ] > h [ j ] h[i] > h[j] h[i]>h[j] 的时候也只能让垂线 j j j 往左移动,也就是,只能是高度较低的垂线向高度较高的垂线移动

5. 代码实现二

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/831080.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python3.11修改并运行oneforall

遇到的问题 使用python3.11默认无法运行oneforall脚本&#xff0c;出现如下报错 # 解决方案 修改 /usr/local/lib/python3.11/dist-packages/exrex.py exrex.py具体文件路径报错中会显示 vim /usr/local/lib/python3.11/dist-packages/exrex.py# 修改前 from re import sre…

ctfshow——JWT

文章目录 web 345web 346——算法改为Noneweb 347-348——爆破密匙web 349——非对称加密算法RS256私钥泄漏web 350——泄漏公钥、非对称密码算法改为对称密码算法 web 345 抓个包&#xff0c;可以看到cookie部分使用JWT&#xff08;Json Web Token&#xff09;。 JWT实际上是…

XML:简介

一、何为XML XML 指可扩展标记语言&#xff08;EXtensible Markup Language&#xff09;&#xff0c;设计宗旨是传输数据&#xff0c;而非显示数据&#xff0c;其是W3C&#xff08;指万维网联盟&#xff08;World Wide Web Consortium&#xff09;&#xff09;的推荐标准。 实例…

自定义@Conditional注解案例,实现动态判断条件,创建Bean

案例2&#xff1a; 在Spring的IOC容器中有一个User的Bean&#xff0c;现要求&#xff1a;某个字节码存在就创建该Bean。不存在不创建。 1、引入依赖 <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId> </depen…

k8s面试29连问

一、容器和虚拟化之间的区别 1、由于docker不需要虚拟管理程序和虚拟机操作系统&#xff0c;运行的只是应用&#xff0c;所以占用资源少。电脑同时开几个虚拟机就跑不动了。 二、k8s和docker的关系 docker主要是通过dockerfile来生产镜像&#xff0c;而k8s 用于关联和编排在…

此平台不支持虚拟化的 AMD-V/RVI。 不使用虚拟化的 AMD-V/RVI,是否继续?

此平台不支持虚拟化的 AMD-V/RVI。 不使用虚拟化的 AMD-V/RVI&#xff0c;是否继续? 关闭内核隔离&#xff0c;重启。

Linux生产者,消费者模型

Linux生产者消费者模型 Linux生产者消费者模型是一个用于解决生产者和消费者之间强耦合问题的设计模式。这个模型通过引入一个容器&#xff08;通常是一个阻塞队列&#xff09;来作为生产者和消费者之间的通信桥梁。 在这个模型中&#xff0c;生产者和消费者彼此之间不直接通…

【二叉树——数据结构】

文章目录 1.二叉树1.基本概念.几种特殊的二叉树 2.考点3.二叉树的存储结构4.二叉树的遍历5.线索二叉树 1.二叉树 1.基本概念. 二叉树是n(n>0)个结点的有限集合 或者为空二叉树&#xff0c;即n0 或者由一个根结点和两个互不相交的被称作根的左子树和右子树组成。 每个结点至…

向gitee推送项目

步骤很详细&#xff0c;直接上教程 在gitee新建项目并复制链接 在当前项目目录打开git bash 输入以下指令进行初始化 git init配置个人信息 git config --global user.name 你的昵称 git config --global user.email 账号绑定的邮箱 5. 绑定远程仓库地址 git remote add ori…

JDBC连接MySQL8 SSL

1.创建用户并指定ssl连接 grant all on . to test% identified by imooc require SSL(X509); 2.查看是否使用ssl SELECT ssl_type From mysql.user Where user"test" 3.配置用户必须使用ssl ALTER USER test% REQUIRE SSL(X509); FLUSH PRIVILEGES; 注意&#xff…

Ext JS 复选框(checkboxfield)在满足一定的条件时不能勾选的实现

Ext JS的复选框(CheckboxField) 的介绍 Ext JS的复选框(CheckboxField)是一个用于创建复选框(checkbox)的控件。复选框允许用户从多个选项中选择一个或多个。 以下是关于 Ext JSCheckboxField的一些详细介绍: 定义:CheckboxField是一个多选控件,它允许用户通过点击来选中…

Vue 之 在当前页面的实现分页效果

目录 场景实现 场景 假设&#xff0c;我们现在有这么一个需求&#xff1a; 上述图片的空白内容是活动的&#xff0c;由下面的两个按钮控制上一页、下一页&#xff1b;我们应该可以怎么去实现&#xff1f; 实现 思路&#xff1a; 其实这个问题&#xff0c;我们仿照其他的UI框…

202109青少年软件编程(Python)等级考试试卷(一级)

第 1 题 【单选题】 取整除的运算符是&#xff1f;&#xff08; &#xff09; A : / B : // C : D : ** 正确答案:B 试题解析: 第 2 题 【单选题】 下面的程序为海龟绘制正方形的程序&#xff0c; 请选择正确选项将程序补全&#xff1f;&#xff08; &#xff09; imp…

企微私域运营软件:构建高效私域流量的利器

随着互联网的快速发展&#xff0c;私域流量运营逐渐成为企业营销的重要一环。企微私域运营软件&#xff0c;作为专注于企业微信生态下的私域流量管理工具&#xff0c;为企业提供了高效、精准的用户运营和营销解决方案。本文将详细介绍企微私域运营软件的功能、特点、优势、适用…

接收区块链的CCF会议--APSEC 2024 截止7.13 附录用率

会议名称&#xff1a;APSEC&#xff08;Asia-Pacific Software Engineering Conference&#xff09; CCF等级&#xff1a;CCF C类学术会议 类别&#xff1a;软件工程/系统软件/程序设计语言 录用率&#xff1a;2023年&#xff0c;90 submissions were recommended for accep…

算法二:DOM - 将DOM节点元素转换成JSON字符串

题目&#xff1a; 将DOM节点元素转换成JSON的格式 例如 <div class"root"><div class"child1"><p></p></div><span></span><div><div><p></p></div></div><p></…

Web前端开发之CSS_2

关系选择器CSS盒子模型弹性盒子模型文档流浮动清除浮动定位 1. 关系选择器 1.1 后代选择器 E F{} 选择所有被 E 元素包含的 F 元素&#xff0c;中间用空格隔开 <ul> <li>后代列表1</li> <div> <ol> <li>后代列表2</li> </ol>…

力扣刷题第0天:只出现一次的数字

目录 第一部分:题目描述 ​第二部分:题目分析 第三部分:解决方法 3.1思路1: 双指针暴力求解 3.2 思路2&#xff1a;异或运算 第四部分:总结收获 第一部分:题目描述 第二部分:题目分析 由图片分析可得&#xff0c;该题目对算法时间复杂度有一定的要求时间复杂度为O(N)&a…

lxml 在 Windows 7上安装无法安装怎么办?

lxml 在 Windows 7上安装无法安装怎么办&#xff1f; 要在Windows 7上安装lxml&#xff0c;您可以按照以下步骤进行操作&#xff1a; 安装Python&#xff1a; 如果您的计算机尚未安装Python&#xff0c;请先安装Python。您可以从Python官方网站下载Windows安装程序&#xff0c…

MongoDB聚合运算符:$subtract

MongoDB聚合运算符&#xff1a;$subtract 文章目录 MongoDB聚合运算符&#xff1a;$subtract语法使用举例数值相减日期相减从日期减去毫秒数 $subtract聚合运算符返回两个数值的差值&#xff0c;或者返回两个日期相差的毫秒数&#xff0c;或者日期与一个毫秒数相差的日期。 语法…