Leetcode練習(Python):數組類:第85題:給定一個僅包含 0 和 1 的二維二進制矩陣,找出只包含 1 的最大矩形,並返回其面積。


題目:
給定一個僅包含 0 和 1 的二維二進制矩陣,找出只包含 1 的最大矩形,並返回其面積。
思路:
使用head和tail來構建以某點為基准的矩形的寬,使用height來定義以某點為基准的矩形的高。
程序:
class Solution:
    def maximalRectangle(self, matrix: List[List[str]]) -> int:
        if not matrix:
            return 0
        row = len(matrix)
        column = len(matrix[0])
        if row <= 0:
            return 0
        if column <= 0:
            return 0
        head = [-1] * column
        tail = [column] * column
        height = [0] * column
        result = 0
        for index1 in range(row):
            current_head = -1
            current_tail = column
            for index2 in range(column):
                if matrix[index1][index2] == "1":
                    height[index2] += 1
                else:
                    height[index2] = 0
            for index2 in range(column):
                if matrix[index1][index2] == "1":
                    head[index2] = max(head[index2], current_head)
                else:
                    head[index2] = -1
                    current_head = index2
            for index2 in range(column - 1, -1, -1):
                if matrix[index1][index2] == "1":
                    tail[index2] = min(tail[index2], current_tail)
                else:
                    tail[index2] = column
                    current_tail = index2
            for index2 in range(column):
                result = max(result, (tail[index2] - head[index2] - 1) * height[index2])
        return result


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



猜您在找 Leetcode練習(Python):數組類:第54題:給定一個包含 m x n 個元素的矩陣(m 行, n 列),請按照順時針螺旋順序,返回矩陣中的所有元素。 LeetCode 85 | 如何從矩陣當中找到數字圍成的最大矩形的面積? Leetcode練習(Python):數組類:第209題:給定一個含有 n 個正整數的數組和一個正整數 s ,找出該數組中滿足其和 ≥ s 的長度最小的連續子數組。如果不存在符合條件的連續子數組,返回 0。 Leetcode練習(Python):數學類:第223題:矩形面積:在二維平面上計算出兩個由直線構成的矩形重疊后形成的總面積。 每個矩形由其左下頂點和右上頂點坐標表示,如圖所示。 Leetcode練習(Python):數組類:第152題:給你一個整數數組 nums ,請你找出數組中乘積最大的連續子數組(該子數組中至少包含一個數字)。 Leetcode練習(Python):數組類:第79題:給定一個二維網格和一個單詞,找出該單詞是否存在於網格中。 單詞必須按照字母順序,通過相鄰的單元格內的字母構成,其中“相鄰”單元格是那些水平相鄰或垂直相鄰的單元格。同一個單元格內的字母不允許被重復使用。 Leetcode練習(Python):回溯算法類:第47題:全排列 II:給定一個可包含重復數字的序列,返回所有不重復的全排列。 Leetcode練習(Python):數組類:第78題:給定一組不含重復元素的整數數組 nums,返回該數組所有可能的子集(冪集)。 說明:解集不能包含重復的子集。 LeetCode: 221_Maximal Square | 二維0-1矩陣中計算包含1的最大正方形的面積 | Medium Leetcode練習(python):字符串類:第93題:復原IP地址:給定一個只包含數字的字符串,復原它並返回所有可能的 IP 地址格式。 有效的 IP 地址正好由四個整數(每個整數位於 0 到 255 之間組成),整數之間用 '.' 分隔。
 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM