lc-go/solutions/2/q221/solution.go

27 lines
557 B
Go

// Package q221 implements a solution for https://leetcode.com/problems/maximal-square/
package q221
func maximalSquare(matrix [][]byte) int {
w, h := len(matrix[0]), len(matrix)
maxSq := make([]int16, w+h)
maxV := make([]int16, w)
ret := 0
for y := range h {
var maxH int16
for x := range w {
if matrix[y][x] == '0' {
maxH, maxV[x], maxSq[x-y+h] = 0, 0, 0
continue
}
maxH++
maxV[x]++
maxSq[x-y+h] = min(maxH, maxV[x], maxSq[x-y+h]+1)
ret = max(ret, int(maxSq[x-y+h]))
}
}
return ret * ret
}
var _ = maximalSquare