LeetCode 最大矩形

2022-06-24 09:18:13 字數 1493 閱讀 4160

q:給出乙個只包含0和1的二維矩陣,找出最大的全部元素都是1的長方形區域,返回該區域的面積。

a:這個題感覺蠻巧妙的。

如果這個點為『1』,先計算當前行的最大寬度,這說明最大寬度左邊的都是保證可以是矩形的。然後往上看,用最小的寬度和當前的高度計算最大的矩形。

看圖:

}同理,高度也可以這麼做。

另一種就是參考計算直方圖中最大矩形的面積

演算法有了,就是求出每一層的 heights 然後傳給上一題的函式就可以了。

**:

public int maximalrectangle(char matrix) 

int maxarea = 0;

int dp = new int[matrix[0].length];

for (int i = 0; i < matrix.length; i++) else

}int area = maxrec(dp);

maxarea = math.max(maxarea, area);

}return maxarea;

}private int maxrec(int heights)

while (stack.peek() != -1)

maxarea = math.max(maxarea, heights[stack.pop()] * (heights.length - stack.peek() -1));

return maxarea;

}

leetcode最大矩形84

給定 n 個非負整數,用來表示柱狀圖中各個柱子的高度。每個柱子彼此相鄰,且寬度為 1 求在該柱狀圖中,能夠勾勒出來的矩形的最大面積。以上是柱狀圖的示例,其中每個柱子的寬度為 1,給定的高度為 2,1,5,6,2,3 圖中陰影部分為所能勾勒出的最大矩形面積,其面積為10個單位。示例 輸入 height...

LeetCode 85 最大矩形

給定乙個僅包含 0 和 1 的二維二進位制矩陣,找出只包含 1 的最大矩形,並返回其面積。示例 輸入 1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 0 輸出 6此題和上一題的擴充套件,此題給的二維矩陣的每一行向上都形成了乙個直方圖,所以二維矩陣有多少行,就有多少個直方圖...

leetcode85 最大矩形

1.轉換成直方圖的做法 參考 利用leetcode84中的方法來做 首先要將給定的01矩陣轉換成84中的直方圖的樣子。每一行都對應乙個直方圖,且下一行直方圖是由上一行直方圖計算得到的。如果是0,則當前直方圖高為0,如果是1,則當前直方圖高度是上一層對應位置高度 1 1 0 1 0 0 1,0 1,0...