// ===============================================================
// 1、单调栈的套路
// 主要解决一维排序的问题
int largestRectangleArea(vector<int> &height)
{
int ret = 0;
height.push_back(0);
vector<int> index;
for (int i = 0; i < height.size(); i++) { // 关键点
while (index.size() > 0 && height[index.back()] >= height[i]) { // 关键点
int h = height[index.back()];
index.pop_back();
int sidx = index.size() > 0 ? index.back() : -1;
ret = max(ret, h * (i - sidx - 1));
}
index.push_back(i);
}
return ret;
}
网友评论