最大正方形

2020-05-08  本文已影响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 算法整的算一个重要又不重要的技能,感觉有则无敌,无则苟且

上一篇 下一篇

猜你喜欢

热点阅读