算法 11. 盛水最多的容器

LeetCode https://leetcode.cn/problems/container-with-most-water/

题目描述

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

思路

双指针左右移动, 然后求面积即可

思路
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Solution {
public:
int maxArea(vector<int>& height) {
int size = height.size();
int left = 0, right = size - 1;
int result = 0;
while (left < right) {
int w = right - left;
int h = min(height[left], height[right]);
result = max(result, w * h);
if (height[left] > height[right])
--right;
else
++left;
}
return result;
}
};