您的位置:首页 > 其它

leetcode - Largest Rectangle in Histogram

2013-04-23 23:04 337 查看
题目描述:点击此处

此题需要仔细想想才知道怎么做,而且几个判断的地方使用乘法会溢出

class Solution {
public:
int largestRectangleArea(vector<int> &height) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
int n = height.size();
if (n<=0)
return 0;
int * hgt = new int
;
int i = 0, j;
bool * flag = new bool
;
for (vector<int>::iterator ii = height.begin(); ii!=height.end(); ii++){
hgt[i] = *ii;
flag[i] = false;
i++;
}
int rlt = 0;
for (i=0; i<n; i++){
if (flag[i])
continue;
if (rlt/(n-i) >= hgt[i])
continue;
int minH = hgt[i];
int area = hgt[i];
for (j=i+1; j<n; j++){
if (hgt[j] >= minH){
area += minH;
}
else{
flag[j] = true;
if (area>rlt)
rlt = area;
if (hgt[j]<=rlt/(n-i))
break;
minH = hgt[j];
area = hgt[j]*(j-i+1);
}
}
if (area>rlt)
rlt = area;
}
return rlt;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: