大家好,欢迎来到IT知识分享网。
给你一个由若干 0
和 1
组成的二维网格 grid
,请你找出边界全部由 1
组成的最大 正方形 子网格,并返回该子网格中的元素数量。如果不存在,则返回 0
。
示例 1:
输入:grid = [[1,1,1],[1,0,1],[1,1,1]] 输出:9
示例 2:
输入:grid = [[1,1,0,0]] 输出:1
提示:
1 <= grid.length <= 100
1 <= grid[0].length <= 100
grid[i][j]
为0
或1
解题思路
首先我们不难想到暴力法,假设给定的grid
长为c
,高为r
,我们从大到小遍历区间[0,min(r,c)]
内的值k
,我们以这个k
作为正方形的宽度,然后遍历grid
的每个点,分别以它作为正方形的左上角点。我们检查这个边长为k
的正方形是不是合法,如果合法,那么此时就是最大的正方形,返回k2
即可。
class Solution: def largest1BorderedSquare(self, grid: List[List[int]]) -> int: r, c = len(grid), len(grid[0]) def check(x1, y1, x2, y2): for x in range(x1, x2): if grid[x][y1] != 1 or grid[x][y2-1] != 1: return False for y in range(y1, y2): if grid[x1][y] != 1 or grid[x2-1][y
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/152398.html