码迷,mamicode.com
首页 > 其他好文 > 详细

221. Maximal Square

时间:2015-06-17 08:13:14      阅读:112      评论:0      收藏:0      [点我收藏+]

标签:

Given a 2D binary matrix filled with 0‘s and 1‘s, find the largest square containing all 1‘s and return its area.

For example, given the following matrix:

1 0 1 0 0
1 0 1 1 1
1 1 1 1 1
1 0 0 1 0

Return 4.

 

Credits:
Special thanks to @Freezen for adding this problem and creating all test cases.

DP问题,dp[i][j] = min(dp[i-1][j-1], dp[i-1][j], dp[i][j-1]).

public class Solution {
  public int maximalSquare(char[][] matrix) {
    int m = matrix.length;
    if (m == 0) {
      return 0;
    }
    int n = matrix[0].length;
    int[][] dp = new int[m][n];
    int max = 0;
    for (int i = 0; i < m; i++) {
      if (matrix[i][0] == ‘1‘) {
        dp[i][0] = 1;
        max = 1;
      }
    }
    for (int i = 0; i < n; i++) {
      if (matrix[0][i] == ‘1‘) {
        dp[0][i] = 1;
        max = 1;
      }
    }
    for (int i = 1; i < m; i++) {
      for (int j = 1 ; j < n; j++) {
        if (matrix[i][j] == ‘1‘) {
          int min = Math.min(dp[i-1][j-1], dp[i-1][j]);
          min = Math.min(min, dp[i][j-1]);
          dp[i][j] = min + 1;
          max = Math.max(max, dp[i][j]);
        }
      }
    }
    return max * max;
  }
}

221. Maximal Square

标签:

原文地址:http://www.cnblogs.com/shini/p/4582296.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!