leetcode221.最大正方形
leetcode221.最大正方形
题目
在一个由 '0' 和 '1' 组成的二维矩阵内,找到只包含 '1' 的最大正方形,并返回其面积。
用例
输入:matrix = [["1","0","1","0","0"],["1","0","1","1","1"],["1","1","1","1","1"],["1","0","0","1","0"]]
输出:4
输入:matrix = [["0","1"],["1","0"]]
输出:1
输入:matrix = [["0"]]
输出:0
求解
/**
* @param {character[][]} matrix
* @return {number}
*/
var maximalSquare = function(matrix) {
let res = 0
for(let i=0;i<matrix.length;i++){
let heights=[]
for(let j=0;j<matrix[0].length;j++){
let height=0
let tmp_i = i
while(tmp_i>=0&&matrix[tmp_i][j]==1){
height++
tmp_i--
}
heights.push(height)
}
find_max(heights)
}
return res
function find_max(heights){
for(let i=0;i<heights.length;i++){
//以第i个高度为起点所能形成的最大矩阵
let min_height=heights[i]
let width = 1
let j=i
while(j<heights.length&&width<=min_height){
max_square = width*width
if(max_square>res){
res=max_square
}
j++
width++
if(heights[j]<min_height){
min_height=heights[j]
}
}
}
}
};

浙公网安备 33010602011771号