时间复杂度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).找出其 ...
随机推荐
- 【经验】you-get + ffmpeg|b站音频下载
一.原理: you-get下载,ffmpeg音视频分离. 这两个都是命令行工具. you-get安装(无python环境请参考python详细安装教程): pip3 install --upgrade ...
- 【BUG】nuget restore遇到的两个报错“Failed to load msbuild Toolset”和“当前 .NET SDK 不支持将 .NET 6.0 设置为目标”
出错环境: Visual Studio 2019 1. Failed to load msbuild Toolset 解决:https://github.com/NuGet/Home/issues/4 ...
- LSTM 与 GRU
弄完这块, 感觉对于 RNN (递归神经网络) 基本就接近尾声了. 相对于 之前的卷积神经网络, 我感觉 RNN 还是相对有意思一些, 也可能是在前面手推 CNN 公式时弄翻车的原因, 以及实在对图像 ...
- C#开发的PDF文件浏览器 - 开源研究系列文章 - 个人小作品
以前个人的PDF浏览主要是用的Adobe DC的PDF,不过它这个打开速度还是一般.后来安装的极速PDF浏览器,速度还是比较快的了.它这个主要是浏览,然后还能够安装编辑器对PDF文件进行编辑,不过就需 ...
- 使用Node.js打造自己的Git版本控制系统
@charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...
- 一款基于 .NET 开源、可以拦截并修改 WinSock 封包的 Windows 软件
前言 今天大姚给大家分享一款基于 .NET 开源(MIT license).可以拦截并修改 WinSock 封包的 Windows 软件:WinsockPacketEditor. 工具介绍 Winso ...
- C# unsafe 快速复制数组
(1) /// <summary> /// 复制内存 /// </summary> /// <param name="dest">目标指针位置& ...
- 鸿蒙运动开发实战:打造 Keep 式轨迹播放效果
前言 在运动类应用中,轨迹播放效果是提升用户体验的关键功能之一.它不仅能直观展示用户的运动路线,还能通过动态效果增强运动的趣味性.Keep 作为一款知名的运动健身应用,其轨迹播放效果深受用户喜爱.那么 ...
- 用bat脚本启动和停止系统服务,如oracle等
启动脚本 启动oracle.bat :: 取得管理员权限 :Main @echo off cd /d "%~dp0" cacls.exe "%SystemDrive%\S ...
- 敏捷史话(十六):我对《敏捷宣言》没有半点贡献—— Brian Marick
" 虽然我是敏捷宣言的作者之一,但我实际上的贡献只是提供了'宣言'这个词而已."Brian Marick 在一次演讲上说道.他说完,现场传来阵阵笑声.因为大家都明白,这只是他的自谦 ...