加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
LC84.cpp 923 Bytes
一键复制 编辑 原始数据 按行查看 历史
xinanXu 提交于 2024-01-30 00:31 . 84. 柱状图中最大的矩形
class Solution {
public:
int largestRectangleArea(vector<int>& heights) {
int len = heights.size();
int dpL[len], dpR[len];
dpL[0] = -1;
dpR[len-1] = len;
for (int i = 1; i < len; i++) {
int& h = heights[i];
if (h > heights[i-1]) dpL[i] = i-1;
else {
int j = i - 1;
while (j >= 0 && heights[j] >= h) j = dpL[j];
dpL[i] = j;
}
}
int ret = -1;
for (int i = len-1; i >= 0; i--) {
int& h = heights[i];
if (i == len - 1 || h > heights[i+1]) dpR[i] = i+1;
else {
int j = i + 1;
while (j < len && heights[j] >= h) j = dpR[j];
dpR[i] = j;
}
if (heights[i] * (dpR[i]-dpL[i]-1) > ret) ret = heights[i] * (dpR[i]-dpL[i]-1);
}
return ret;
}
};
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化