1. 程式人生 > >LeetCode-221:最大正方形[Java實現]

LeetCode-221:最大正方形[Java實現]

在一個由 0 和 1 組成的二維矩陣內,找到只包含 1 的最大正方形,並返回其面積。

示例:

輸入:

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

輸出: 4
有很多人用動態規劃來做,這裡提供一種非dp的做法,執行時間17ms。

class Solution {

    public int maximalSquare(char[][] matrix) {
        int res = 0;
        int max = 0;
        for (int i = 0; i < matrix.length; i++) {
            for
(int j = 0; j < matrix[i].length; j++) { if (matrix[i][j] != '1') continue; res = 1; int remain = Math.min(matrix.length - i, matrix[i].length - j); for (int k = 1; k < remain; k++) { int flag = 1; for
(int i1 = i; i1 <= i + k; i1++) { if (matrix[i1][j + k] != '1') { flag = 0; break; } } if (flag == 0) break; for (int j1 = j; j1 <= j + k; j1++) { if
(matrix[i + k][j1] != '1') { flag = 0; break; } } if (flag == 0) break; res++; } if (res > max) max = res; } } return max * max; } }