代码:
int L[10001], R[10001];
class Solution {
public:
int ans = 0, minh = 1e9, maxh = -1;
int maxArea(vector<int>& height) {
for (int i = 0; i < 10001; i++) {
L[i] = 1e9;
R[i] = -1;
}
for (int i = 0; i < height.size(); i++) {
int h = height[i];
L[h] = min(L[h], i);
R[h] = max(R[h], i);
minh = min(minh, h);
maxh = max(maxh, h);
}
int A = R[maxh]; //最大下标
int B = L[maxh]; //最小下标
ans = 0;
for (int i = maxh; i >= minh; i--) {
A = max(A, R[i]);
B = min(B, L[i]);
int sz1 = A - L[i]; //高-矮
int sz2 = R[i] - B; //
ans = max(ans, i * max(sz1, sz2));
}
return ans;
}
};

京公网安备 11010502036488号