美文网首页
最大正方形

最大正方形

作者: _阿南_ | 来源:发表于2020-05-08 17:16 被阅读0次

    题目:

    在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。
    
    示例:
    
    输入: 
    
    1 0 1 0 0
    1 0 1 1 1
    1 1 1 1 1
    1 0 0 1 0
    
    输出: 4
    

    题目的理解:

    找到1,则进行判断正方形的一圈是否都是1. 然后记录面积。

    python实现

    class Solution:
        def maximalSquare(self, matrix: List[List[str]]) -> int:
            row = len(matrix)
            if 0 >= row:
                return 0
            column = len(matrix[0])
    
            result = set()
    
            def findSquare(i: int, j: int, times: int, area: int) -> int:
                columnTemp = j + times
                if columnTemp >= column:
                    return area
                rowTemp = i + times
                if rowTemp >= row:
                    return area
    
                for index in range(times + 1):
                    if '1' != matrix[i + index][columnTemp]:
                        return area
    
                    if '1' != matrix[rowTemp][j + index]:
                        return area
    
                return findSquare(i, j, times + 1, (times + 1) ** 2)
    
            for i in range(row):
                for j in range(column):
                    if '1' == matrix[i][j]:
                        area = findSquare(i, j, 1, 1)
                        result.add(area)
    
            return max(result) if len(result) > 0 else 0
    

    想看最优解法移步此处

    提交

    暴力解法

    // END 算法整的算一个重要又不重要的技能,感觉有则无敌,无则苟且

    相关文章

      网友评论

          本文标题:最大正方形

          本文链接:https://www.haomeiwen.com/subject/grfqnhtx.html