思路:参考http://www.cnblogs.com/grandyang/p/4322653.html
找到矩阵中的局部峰值,然后向前遍历,找出最小高度,计算出最小峰值和当前局部峰值所围成的面积。保存在遍历过程中的面积的最大值。
class Solution {
public:
int largestRectangleArea(vector<int>& heights) {
int ans=0;
int n=heights.size();
for(int i=0;i<n;++i)
{
if(i+1<n&&heights[i]<=heights[i+1]) continue;
int minheight=heights[i];
for(int j=i;j>=0;--j)
{
minheight=min(minheight,heights[j]);
int area=minheight*(i-j+1);
ans=max(ans,area);
}
}
return ans;
}
};