leetcode 1277. 統計全為 1 的正方形子矩陣 java


題目:

給你一個 m * n 的矩陣,矩陣中的元素不是 0 就是 1,請你統計並返回其中完全由 1 組成的 正方形 子矩陣的個數。

 

示例 1:

輸入:matrix =
[
  [0,1,1,1],
  [1,1,1,1],
  [0,1,1,1]
]
輸出:15
解釋: 
邊長為 1 的正方形有 10 個。
邊長為 2 的正方形有 4 個。
邊長為 3 的正方形有 1 個。
正方形的總數 = 10 + 4 + 1 = 15.

示例 2:

輸入:matrix = 
[
  [1,0,1],
  [1,1,0],
  [1,1,0]
]
輸出:7
解釋:
邊長為 1 的正方形有 6 個。 
邊長為 2 的正方形有 1 個。
正方形的總數 = 6 + 1 = 7.

 

提示:

  • 1 <= arr.length <= 300
  • 1 <= arr[0].length <= 300
  • 0 <= arr[i][j] <= 1

解題:

class Solution {
    public int countSquares(int[][] matrix) {
        if (matrix.length == 0 || matrix[0].length == 0) {
            return 0;
        }
        int m = matrix.length;
        int n = matrix[0].length;
        int[][] dp = new int[m + 1][n + 1];
        int res = 0;
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                if (matrix[i][j] == 1) {
                    dp[i + 1][j + 1] = Math.min(Math.min(dp[i][j + 1], dp[i + 1][j]),
                            dp[i][j]) + matrix[i][j];
                    res += dp[i + 1][j + 1];
                }
            }
        }
        return res;
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM