zoukankan      html  css  js  c++  java
  • 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;
        }
    }
  • 相关阅读:
    python基础 列表生成式
    docker 基础
    xpath例子
    redis删除以什么开头的key
    redis 关闭持久化
    python爬虫 保存页面
    python爬虫操作cookie
    SQl函数的写法
    加料记录(大屏幕)
    ios 调试
  • 原文地址:https://www.cnblogs.com/yanhowever/p/11985300.html
Copyright © 2011-2022 走看看