华为题:盛最多水的容器
给定一个长度为 n 的整数数组 height,第 i 条垂线的高度为 height[i],找出其中两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。
输出最大水量。
输入描述
第一行输入一个整数 n。
第二行输入 n 个整数,表示 height。
输出描述
输出最大水量。
示例 1
输入
text
9
1 8 6 2 5 4 8 3 7
输出
text
49
C++ 解法
cpp
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> h(n);
for (int i = 0; i < n; i++) cin >> h[i];
int left = 0, right = n - 1;
int ans = 0;
while (left < right) {
int area = min(h[left], h[right]) * (right - left);
ans = max(ans, area);
if (h[left] < h[right]) left++;
else right--;
}
cout << ans << endl;
return 0;
}