lc-go/solutions/2/q221/solution.go
2026-01-07 18:04:39 +09:00

26 lines
469 B
Go

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