题目描述
给你一个由若干 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
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/largest-1-bordered-square
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路
class Solution {
public:
int largest1BorderedSquare(vector<vector<int>>& grid) {
int m = grid.size(),n = grid[0].size();
int len = min(m,n);
while(len){
for(int i=0;i<=m-len;i++) {
for(int j=0;j<=n-len;j++) {
bool det = true;
for(int k=0;k<len;k++) {
if(grid[i+k][j]==0||grid[i][j+k]==0||grid[i+len-1][j+k]==0||grid[i+k][j+len-1]==0) {
det = false;
break;
}
}
if(det) return len*len;
}
}
--len;
}
return 0;
}
};