每次以第i个值为高的最大值,然后取最大值
以第i个值为高的最大值的计算: [i]后面的值大于它时 最大值加上一个[i],小于它时跳出,它前面的值做同样的处理
想法简单,时间复杂度比较高
int largestRectangleArea(std::vector<int>& heights) {
if(heights.size()==0)
return 0;
int max=0;
for(int i=0;i<heights.size();i++){
int c=heights[i];
for(int j=i+1;j<heights.size();j++){
if(heights[i]>heights[j])
break;
else if(heights[i]<=heights[j])
c=c+heights[i];
}
for(int j=i-1;j>=0;j--){
if(heights[i]>heights[j])
break;
else if(heights[i]<=heights[j])
c=c+heights[i];
}
if(c>max)
max=c;
}
return max;
}