1277. 统计全为 1 的正方形子矩阵(动态规划)

1277. 统计全为 1 的正方形子矩阵(动态规划)给你一个 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],

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

给你一个 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

题解
参考上一篇博客添加链接描述

这里只需要把每个以[i , j]为右下角的矩形统计出来有多少个就行了。

class Solution { 
   
public:
    int countSquares(vector<vector<int>>& matrix) { 
   
        int n = matrix.size(),m = matrix[0].size();
        int res = 0;
        vector<vector<int> >f(n + 1,vector(m + 1,0));
        for(int i = 1;i <= n;i ++){ 
   
            for(int j = 1;j <= m;j ++){ 
   
                if(matrix[i - 1][j - 1] == 1){ 
   
                    f[i][j] = min(f[i - 1][j],min(f[i][j - 1],f[i - 1][j - 1])) + 1;
                }
                else f[i][j] = 0;
                res += f[i][j];
            }
        }
        return res;
    }
};
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/168637.html原文链接:https://javaforall.net

(0)
上一篇 2022年8月9日 下午12:00
下一篇 2022年8月9日 下午12:00


相关推荐

  • 0xffffffff颜色值是怎么读的「建议收藏」

    0xffffffff颜色值是怎么读的「建议收藏」平常看到的大多数是十六进制的,#f5f5f5。但是在自定义控件的时候,有些地方使用了像0xffffffff,这些设置颜色,在百度给的也不太明确,后来查找发现,原来是在C语言中十六进制数必需以0x开头,以0x开头的数即表明它是一个十六进制的数,真正的数是0x后的值,所以,这种颜色值,0x不用管,接着的两位数ff是表示透明度,再接着的六位数就是平常看的#ffffff了。

    2022年5月17日
    51
  • java基本类型与引用类型

    java基本类型与引用类型java 基本类型与引用类型目录 java 基本类型与引用类型目录一基本数据类型二引用类型三基本类型与引用类型的区别默认值内存分配自动装箱自动拆箱自动装箱拆箱带来的问题程序的性能空指针异常对象相等比较时一 基本数据类型 java 中一共分为 8 种基本数据类型 byte short int long float double char b

    2026年3月26日
    2
  • GPT-Crawler教程:智能文本采集与处理

    GPT-Crawler教程:智能文本采集与处理

    2026年3月15日
    2
  • python中merge函数「建议收藏」

    python中merge函数「建议收藏」merge函数用来合并下面我们看看长什么样子merge(left,right,how=’inner’,on=None,left_on=None,right_on=None,left_index=False,right_index=False,sort=False,suffixes=(‘_x’,’_y’),copy=True,indicator=False,valida…

    2022年6月1日
    64
  • ODPS double类型转型精度问题总结

    ODPS double类型转型精度问题总结简介:ODPSdouble类型转型精度问题总结从相差0.0000000000001说起,本文主要是对odps的Double和Decimal的精度使用问题做一个总结。1.问题描述客户开发人员在使用maxcompute对double数据类型求和时出现错误(数据表由oracle数据库抽取到maxcompute,对应字段类型为number到double),正确的结果是1943.38,但求和结果为1943.3799999999999,结果相差了0.0000000000001,这个…

    2022年7月20日
    18
  • kong简介_意大利kong

    kong简介_意大利kongKong简介Kong是一款基于OpenResty(Nginx+Lua模块)编写的高可用、易扩展的,由Mashape公司开源的APIGateway项目。Kong是基于NGINX和ApacheCassandra或PostgreSQL构建的,能提供易于使用的RESTfulAPI来操作和配置API管理系统,所以它可以水平扩展多个Kong服务器,通过前置的负载均衡配置把请求均匀地分发到各个Se…

    2022年4月19日
    67

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号