国外优秀设计网站,网站域名自动跳转,网站无障碍建设,合肥租房网给定一个长度为 n 的整数数组 height 。有 n 条垂线#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明#xff1a;你不能倾斜容器。 示例 1第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明你不能倾斜容器。 示例 1 输入[1,8,6,2,5,4,8,3,7] 输出49 解释图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下容器能够容纳水表示为蓝色部分的最大值为 49。
示例 2
输入height [1,1] 输出1
解题思路 设置一个双指针left和right一个从左向右移动一个从右向左移动观察可知容积为(right-left)*min(height[left],height[right])。 当左边的高度小于右边时移动左边指针反之移动右边指针高度相等时随便移动一个就行本文选择移动右边指针。然后每移动过一次就和max比大小大于max就替换掉直到leftright class Solution {
public:int maxArea(vectorint height) {int max0;int left0,rightheight.size()-1;while(left!right){int vol(right-left)*min(height[left],height[right]);//容积if(volmax){maxvol;}if(height[left]height[right]){left;}else{--right;}}return max;}
};