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

此题仅遍历一遍数组,关键是用双指针从数组两端开始查找
我的思路:
- 容器宽为width=right-left,高为heightMin
- right和left初始为数组第一个索引和最后一个索引,高为两个元素中的最小值
- 使用while循环让左右指针移动,直到两指针相遇遍历完数组。同时计算每一次的面积,与上一次的面积比较。
我的代码:
//定义左右指针,初始值分别是数组最左和最右的索引
int left = 0;
int right = height.length-1;
int maxArea = 0; //存储最大面积
//让左右指针遍历完数组,循环条件是左右指针未相遇
while(left < right){
//计算当前的高,宽和面积
int heightMin = Math.min(height[left],height[right]);
int width = right - left;
int area = width * heightMin;
//更新最大面积
maxArea = Math.max(area,maxArea);
//移动指针
if(height[left]<height[right]){
left++;
}else{
right--;
}
}
return maxArea;
时间复杂度O(n):查找盛最多水的容器的更多相关文章
- LeetCode:盛最多水的容器【11】
LeetCode:盛最多水的容器[11] 题目描述 给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) .在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 ...
- Java实现 LeetCode 11 盛最多水的容器
11. 盛最多水的容器 给定 n 个非负整数 a1,a2,-,an,每个数代表坐标中的一个点 (i, ai) .在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) ...
- 力扣Leetcode 11. 盛最多水的容器
盛最多水的容器 给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) .在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0).找 ...
- LeetCode---11. 盛最多水的容器(Java)
11. 盛最多水的容器 题目地址:https://leetcode-cn.com/problems/container-with-most-water/ 给你 n 个非负整数 a1,a2,...,an ...
- 【LeetCode】11. Container With Most Water 盛最多水的容器
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 个人公众号:负雪明烛 本文关键词:盛水,容器,题解,leetcode, 力扣,python ...
- 【LeetCode】盛最多水的容器【双指针+贪心 寻找最大面积】
给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) .在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0).找出其中的两条线, ...
- 011 Container With Most Water 盛最多水的容器
给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) .画 n 条垂直线,使得垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0).找出其中的两条线,使得它们 ...
- 【LeetCode】11. 盛最多水的容器
题目 给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) .在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0).找出其中的两 ...
- 【leetcode-11】盛最多水的容器
给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) .在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0).找出其中的两条线, ...
- leetcode题目11.盛最多水的容器(中等)
题目描述: 给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) .在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0).找出其 ...
随机推荐
- 【记录】博客|Markdown写作常用的符号表示、公式写法合集
文章目录 基础内容Basic 1.符号合集 2.LaTeX公式输入 附加内容Addition 1.公式左对齐 2.Markdown文档导出的PDF分页 基础内容Basic 1.符号合集 LATEX M ...
- Java实现minio上传文件加解密操作
一.背景与需求 在云存储场景中,数据安全是核心需求之一.MinIO作为高性能对象存储服务,支持通过客户端加密(CSE)在数据上传前完成加密,确保即使存储服务器被攻破,攻击者也无法获取明文数据.本文将详 ...
- CentOS使用yum update更新时不升级内核的方法
RedHat/CentOS/Fedora使用 yum update 更新时,默认会升级内核.但有些服务器硬件(特别是组装的机器)在升级内核后,新的内核可能会认不出某些硬件,要重新安装驱动,很麻烦.所以 ...
- Golang实现RPC
RPC 一.简介 远程过程调用(Remote Procedure Call,RPC)是一个计算机通信协议 : 该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额 外地为这个交互作 ...
- 详解鸿蒙Next仓颉开发语言中的动画
大家上午好,今天来聊一聊仓颉开发语言中的动画开发. 仓颉中的动画通常有两种方式,分别是属性动画和显示动画,我们今天以下面的加载动画为例,使用显示动画和属性动画分别实现一下,看看他们有什么区别. 显示动 ...
- C#实现语音预处理:降噪、静音检测、自动增益(附Demo源码)
无论是在音视频录制系统,还是音视频通话系统.或视频会议系统中,对从麦克风采集到的说话的声音数据进行预处理,都是是非常必要的. 语音数据预处理主要包括:降噪(Noise Reduction).静音检 ...
- 干货|三个维度详解 Taier 本地调试原理和实践
在平时和开发者们交流的过程中,发现许多开发朋友尤其是新入门 Taier 的开发者,对于本地调试都有着诸多的不理解和问题.本文就大家平时问的最多的三个问题,服务编译,配置&本地运行,如何在 Ta ...
- 线程CompletableFuture简单使用 记录一下
CompletableFuture.runAsync(() -> { //代码块 }); //可以选择线程执行后的结果去判断下一步的执行,具体使用百度自查
- 2025 ZJ 中考数学压轴题的一种解析几何做法
提示:文章含有较多 \(\LaTeX\),可能加载时间较长,125% 缩放页面,更好的公式体验. 同步发表于 洛谷 [题目描述] (知乎的,侵删,红色的是我加的线,帮助 STD 的讲解) 这里我们只考 ...
- stm32达到什么程度叫精通?
作为一个在嵌入式领域摸爬滚打了快10年的老兵,看到这个问题时我陷入了深深的思考.精通?这两个字说起来轻松,但要真正做到却是另一回事.我记得刚入行的时候,觉得会用几个库函数就算"精通" ...