分析
对于每一个点对应的高度h[i]
- 向左边找到第一个比h[i]小的下标l
- 向右边找到第一个比h[i]小的下标r
- 更新最大面积:ans=max(ans,h[i]*(r-l+1)
C++ 代码
#include<bits/stdc++.h>
using namespace std;
const int N = 1010;
int n,ans;
int h[N];
int main()
{
cin >> n;
for (int i = 1; i <= n; i ++ ) cin >> h[i];
for (int i = 1; i <= n; i ++ )
{
int l = i, r = i;
while (l - 1 >= 1 && h[l - 1] >= h[i]) l -- ;
while (r + 1 <= n && h[r + 1] >= h[i]) r ++ ;
ans = max(ans, (r - l + 1) * h[i]);
}
cout << ans << endl;
return 0;
}