首页 > 试题广场 >

盛水最多的容器

[编程题]盛水最多的容器
  • 热度指数:33412 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个数组height,长度为n,每个数代表坐标轴中的一个点的高度,height[i]是在第i点的高度,请问,从中选2个高度与x轴组成的容器最多能容纳多少水
1.你不能倾斜容器
2.当n小于2时,视为不能形成容器,请返回0
3.数据保证能容纳最多的水不会超过整形范围,即不会超过231-1

数据范围:


如输入的height为[1,7,3,2,4,5,8,2,7],那么如下图:


示例1

输入

[1,7,3,2,4,5,8,2,7]

输出

49
示例2

输入

[2,2]

输出

2
示例3

输入

[5,4,3,2,1,5]

输出

25
头像 牛客题解官
发表于 2022-04-22 13:06:25
精华题解 题目主要信息: 输入一个数组,其中每个元素代表水桶边界高度 水桶容积为边界较短的一边高度乘上两边界的距离(数组下标表示距离) 求在数组中选取两个边,求最大容积 举一反三: 学习完本题的思路你可以解决如下题目: BM94. 接雨水问题 方法:贪心法(建议使用) 知识点1:双指针 双指针指的是在遍历 展开全文
头像 godhands
发表于 2021-12-30 17:54:21
描述 题目描述 首先给定我们一个数组,我们要找到可以盛水的最大值,然后这个就是取决于两块板子长度之间最短的那个,然后我们再乘上他们之间的距离,就是我们可以呈的水了 样例解释 [1,7,3,2,4,5,8,2,7] 这里给我们的是每一个位置的板子的一个长度,然后我们现在可以发现,其实我们选择777和 展开全文
头像 翻过了青山
发表于 2022-03-04 21:16:38
双指针解法 /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param height int整型一维数组 * @return int整型 */ function maxArea( height ) { // write c 展开全文
头像 spicychicken_123
发表于 2022-03-17 15:35:49
/**  * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可  *  *   * @param height int整型一维数组   * @param&n 展开全文
头像 幸福我也能买到
发表于 2022-12-30 13:50:10
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param height int整型一维数组 # @return(756076230) int整型 #双指针+贪心 class Solution: def maxArea(self , hei 展开全文
头像 空中转体一周半
发表于 2022-05-15 17:02:45
贪心算法:设置左右两个指针,选取高度小的那个为上限,计算当前左右柱子围起来的水量和max哪个大即可。 public class Solution { public int maxArea (int[] height) { int left =0,right = height 展开全文
头像 新手村小吴
发表于 2022-11-08 17:10:48
一个思路不同的贪心 经典贪心思路是:当前要挪动一个指针,那么宽度必然减少1,既然宽度减少量是固定的,我们选择短的一边挪动,期待挪动后的木板会变长。 我的方法是,相比于把木板当作主体,我把水当作主体,给木板分配任务。我们知道,盛水量最大的时候,水面有可能是任何高度:可能是相距比较远的短板, 展开全文
头像 风止意难平/
发表于 2023-03-21 20:44:07
//这道题要求采用双指针,那么我们直接定义一个左指针指向数组第一个元素,右指针 //指向数组最后一个元素,然后开始计算此时盛水面积,保存了第一个面积之后 //我们就要思考如何求出最大面积,因为我们已经用了第一个元素和最后一个元素的面积 //我们发现这两个元素中任意一个元素与中间元素的组合都无法突破第 展开全文
头像 万千少男的梦
发表于 2024-05-21 20:11:04
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param height int整型vector * @return int整型 展开全文
头像 爱唱歌的潜伏者在发呆
发表于 2024-02-26 12:57:03
class Solution { public: //双指针算法 int maxArea(vector<int>& height) { int n=height.size(); int left=0,right=n-1; 展开全文
头像 Gopher015
发表于 2022-09-10 11:25:29
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # #  # @param height int整型一维数组  # @return int整型 # class Solution 展开全文