给定一个长度为 n
的整数数组 height
。有 n
条垂线,第 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。
//给的数组的值代表的是它的高度 下标就是第几条 找到两个线 让他放水最多 其实就是找围成的最大面积 也就是坐标的x*y最大双指针做法的经典题型 因为求面积所以是 选出最短的移动 左右指针 最重要的是什么时候指针移动 直到相遇才结束循环*///什么时候移动呢 不管怎么移动 它都会减少x的值 那在这个前提下 我让下一个水槽有可能 我说的是有可能变的大 移动短板的话 下一个水槽可能会变大 要是移动长板的话 一定是减少的class Solution {public:int maxArea(vector<int>& height) {int left = 0,right = height.size()-1,sum = 0;while(left<right){int y = min(height[left],height[right]);//高度一定是看端的 int x = right - left;sum = max(sum,y*x);if(height[left]<height[right]){left++;}else{right--;}}return sum;}};