221.maximal-square.go 486 B

1234567891011121314151617181920212223242526
  1. func maximalSquare(matrix [][]byte) int {
  2. n := len(matrix)
  3. if n == 0 {
  4. return 0
  5. }
  6. m := len(matrix[0])
  7. if m == 0 {
  8. return 0
  9. }
  10. hei := make([][]int, n) // Init the accumulative height matrix
  11. hei[0] = make([]int, m)
  12. for i := range matrix[0] {
  13. hei[0][i] = int(matrix[0][i]-'0')
  14. }
  15. for i := 1; i < m; i++ {
  16. hei[i] = make([]int, m)
  17. for j := range matrix[i] {
  18. if matrix[i][j] == '0' {
  19. hei[i][j] = 0
  20. } else {
  21. hei[i][j] = hei[i-1][j] + 1
  22. }
  23. }
  24. }
  25. return 0
  26. }