LeetCode:盛最多水的容器

文章收录于LeetCode专栏


盛最多水的容器

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

解题

1、审题

  数组中各个元素表示柱子的高度(坐标系中的纵坐标),这里的高度就可以作为容器的高,两跟柱子之间的间距就作为容器的长,即容器最多容纳水就是高乘以长。要把柱子的高作为容器的高,就会必须得取二则的相对矮的那一根柱子。例如1和8之间就得取1。

2、列出所有解

  通过对题意的理解可以使用暴力法和左右收敛法来解答改题目。

解法一(暴力法)
class Solution{public int maxArea(int[] height){int max = 0;for(int i=0; i<height.length-1; i++){for(int j=i+1; j<height.length; j++){int area = Math.min(height[i], height[j]) * (j-i);max = Math.max(max, area);}}return max;}
}
解法二(左右收敛)
class Solution{public int maxArea(int[] height){int max = 0;for(int i=0, j=height.length-1; i<j;){int h = height[i] < height[j] ? height[i++]:height[j--];int area = h * (j-i+1);max = Math.max(max, area);}return max;}
}

3、复杂度分析

  首先来看下暴力解法的时间复杂度和空间复杂度,因为暴力法使用了两层循环,所以时间复杂度为O(n2),没有使用任何额外空间,所以空间复杂度为O(1)。左右收敛法因为只使用一层循环,所以时间复杂度为O(n),同样空间复杂度为O(1)。综上左右收敛法是最优解。


一键三连,让我的信心像气球一样膨胀!

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

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

相关文章

常见比较实用的Chrome命令/扩展程序

文章目录 一、Chrome命令二、Chrome操作三、Chrome扩展程序 一、Chrome命令 Chrome浏览器提供了一系列实用的内部命令和URL&#xff0c;这些命令可以帮助用户快速访问浏览器的各种功能和设置。以下是一些实用的Chrome命令&#xff1a; 查看所有支持的命令&#xff1a; 直接在…

24上半年软考时间安排已出!

正在备考上半年软考考试的宝子们注意啦~ 软考官网已经发布了24上半年考试时间及科目安排&#xff0c;大家仔细查看&#xff0c;确认好考试时间&#xff0c;以防错过考试。 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 通知原文如下&#xff1a;↓↓↓…

利用 MyNodeQuery 搭建三网延迟监控 实时监控 VPS 网络情况

本文首发于只抄博客&#xff0c;欢迎点击原文链接了解更多内容。 前言 MyNodeQuery 是一款简洁好用的探针&#xff0c;可以作为 NodeQuery 关闭后的替代品&#xff0c;功能也基本参照 NodeQuery&#xff0c;支持节点离线通知、节点排序、自定义 Ping 节点&#xff0c;还有网速…

关于YOLO8学习(六)安卓部署ncnn模型--图片检测

前文 关于YOLO8学习(一)环境搭建,官方检测模型部署到手机 关于YOLO8学习(二)数据集收集,处理 关于YOLO8学习(三)训练自定义的数据集 关于YOLO8学习(四)模型转换为ncnn 关于YOLO8学习(五)安卓部署ncnn模型–视频检测 简介 前文第五章,讲述了部署自定义模型后,进…

构建多代开发团队的沟通与共识:方法与实践

团队中拥有各个年龄段的开发者是一种常见的现象&#xff0c;如何快速形成一套团队沟通语言、共识和知识体系是团队协作和发展的关键。下面我们就这个话题展开讨论。 1. 建立共同目标和价值观 首先&#xff0c;团队需要明确共同的目标和价值观。无论年龄段的差异如何&#xff…

关于Git的commit message规范

前几天在提交代码的时候突然发现自己的commit message写的有点问题&#xff0c;然后到网上查了下发现Git的commit message也是有规范的&#xff0c;下面我总结了三条我认为最重要的。 1.commit message需要简洁明了&#xff0c;突出变更的目的 2.提交信息的前缀用来表示你的这…

2023ccpc重庆站女生专场B.终焉之茧(交互题)

2023 c c p c 重庆站女生专场 B . 终焉之茧 \Huge{2023ccpc重庆站女生专场B.终焉之茧} 2023ccpc重庆站女生专场B.终焉之茧 文章目录 题意思路标程 题目链接&#xff1a;B. 终焉之茧 题意 给定一个无限大的平面&#xff0c;终焉之茧坐标为 [ x 0 , y 0 ] [x_0,y_0] [x0​,y0​]…

【牛客】Tokitsukaze and Average of Substring

原题链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 前缀和。 开一个int类型的前缀和数组pre[30][N]&#xff08;pre[i][j]表示某字符转成的数字 i 在一段区间的前缀个数。因为字母表有‘a’~z…

git stash 工作中常用命令记录

save 可省略, 则使用最近一次的提交记录的描述来存储 git stash save “暂存内容描述” 查看暂存列表 git stash list 获取/使用 但不删除 本次暂存内容 git stash apply 默认第一个使用其他则追加 stash{number} 即可, 例如,使用第三个(从0开始) git stash apply stash{2} 获取…

理解Oracle闪回级别【Oracle闪回技术】(一)

Oracle闪回技术是数据恢复技术&#xff0c;具有恢复时间快&#xff0c;不适用备份文件。可以使数据库回到某个状态。 可以满足用户的逻辑处理的快速恢复。 但是闪回技术只是逻辑数据恢复&#xff0c;如果是数据文件损坏&#xff0c;必须依赖介质才能恢复。 闪回技术的特性&…

腾讯的EdgeONE是什么?

腾讯的EdgeONE是一项边缘计算解决方案&#xff0c;具有一系列优势&#xff1a; 边缘计算能力强大&#xff1a;EdgeONE利用腾讯云在全球范围内的分布式基础设施&#xff0c;提供强大的边缘计算能力&#xff0c;可以实现低延迟和高可用性的服务。 智能化和自动化&#xff1a;Edg…

深度学习训练八股

一、模型中的函数的定义 1.torchmetrics.AUROC &#xff08;1&#xff09;.binary >>> from torch import tensor >>> preds tensor([0.13, 0.26, 0.08, 0.19, 0.34]) >>> target tensor([0, 0, 1, 1, 1]) >>> auroc AUROC(task&quo…

Nessus 部署实验

一、下载安装https://www.tenable.com/downloads/nessus 安装好之后&#xff0c;Nessus会自动打开浏览器&#xff0c;进入到初始化选择安装界面&#xff0c;这里我们要选择 Managed Scanner 点击继续&#xff0c;下一步选择Tenable.sc 点击继续&#xff0c;设置用户名和密码 等…

HSP_06章_Python_函数

文章目录 P67 函数入门1. 基本语法2. 函数的调用3. 函数的注意事项和使用细节 P71 递归机制1. 基本介绍2.递归能解决什么问题3. 递归的重要规则 P72 函数作为参数传递P73 lambda匿名函数P74 全局变量和局部变量 P67 函数入门 1. 基本语法 2. 函数的调用 3. 函数的注意事项和使…

浅谈操作系统中的重要概念——线程(3)——设计模式

文章目录 一、什么是设计模式&#xff1f;二、单例模式2.1、饿汉模式2.2、懒汉模式2.3、多线程情况下调用 饿汉模式与懒汉模式 谁是安全的&#xff1f;&#xff1f;&#xff08;重点&#xff09; 三、工厂模式 一、什么是设计模式&#xff1f; 设计模式就相当于菜谱&#xff0…

虚拟机文件夹共享操作(本地访问)

新建一个文件夹 右击文件夹点击属性 找到共享 点击共享 选择本地用户共享就可以了 本地winr 输入我们图片中的格式&#xff08;IP前加 “\\” &#xff09; 会弹一个窗口&#xff0c;输入虚拟机的入户名和密码就可以共享了&#xff08;一般默认用户名都是administrator&am…

2.3.1 语言大模型的预训练

模块化大模型 接口安全&#xff1a; 模块化设计意味着不同的模块需要通过定义良好的接口进行交互。如果这些接口没有得到适当保护&#xff0c;它们可能成为攻击者的攻击目标&#xff0c;攻击者可以通过这些接口注入恶意数据或提取敏感信息。 数据泄露风险&#xff1a; 在模块化…

C++笔记:类与对象(三)->多态

多态 虚函数 先来看一段代码&#xff1a; #include<iostream> using namespace std;class Animal { public :void run() {cout << "I dont know how to run" << endl;} };class Cat : public Animal{ public :void run() {cout << "I …

【毕业设计】基于微信小程序的校园快递平台系统设计与实现

1.项目介绍 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统校园快递平台系统信息管理难度大&#xff0c;容错率…