最大矩形,最大正方形
1.LeetCode85 最大矩形
-
题目:给定一个仅包含 0 和 1 、大小为 rows x cols 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。
-
思路:枚举每条边做下边界,以这条边界为底算柱状图中的最大矩形(利用LeetCode84,单调栈解法);最后比较各条下边界做底的最大值。
-
答案:
class Solution {
public:
int largestRectangleArea(vector<int>& heights) {
stack<int> st1;
int n = heights.size();
vector<int> res1(n, -1), res2(n, n);
for (int i = 0; i < heights.size(); i++) {
while(!st1.empty() && heights[i] <= heights[st1.top()]) {
res2[st1.top()] = i;
st1.pop();
}
if(!st1.empty()) res1[i