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...