LeetCode 1504. 统计全 1 子矩形(记录左侧的连续1的个数)

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

给你一个只包含 0 和 1 的 rows * columns 矩阵 mat ,
请你返回有多少个 子矩形 的元素全部都是 1

示例 1:
输入:mat = [[1,0,1],[1,1,0],[1,1,0]]
输出:13
解释:
有 61x1 的矩形。
有 21x2 的矩形。
有 32x1 的矩形。
有 12x2 的矩形。
有 13x1 的矩形。
矩形数目总共 = 6 + 2 + 3 + 1 + 1 = 13 。示例 2:
输入:mat = [[0,1,1,0],[0,1,1,1],[1,1,1,0]]
输出:24
解释:
有 81x1 的子矩形。
有 51x2 的子矩形。
有 21x3 的子矩形。
有 42x1 的子矩形。
有 22x2 的子矩形。
有 23x1 的子矩形。
有 13x2 的子矩形。
矩形数目总共 = 8 + 5 + 2 + 4 + 2 + 2 + 1 = 24 。示例 3:
输入:mat = [[1,1,1,1,1,1]]
输出:21示例 4:
输入:mat = [[1,0,1],[0,1,0],[1,0,1]]
输出:5提示:
1 <= rows <= 150
1 <= columns <= 150
0 <= mat[i][j] <= 1

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/count-submatrices-with-all-ones
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

类似题目:
LeetCode 1277. 统计全为 1 的正方形子矩阵(DP)
LeetCode 5655. 重新排列后的最大子矩阵(前缀和+排序)

  • 记录每个点的该行左侧连续的1的个数
  • 枚举以每个点为矩形右下角时,矩形的数量
  • 在每个点往上面的行开始枚举,同时记录最小宽度
class Solution {
public:int numSubmat(vector<vector<int>>& mat) {int m = mat.size(), n = mat[0].size();int i, j,k, width, count = 0;vector<vector<int>> left1(m, vector<int>(n,0));for(i = 0; i < m; i++) {count = 0;for(j = 0; j < n; j++){if(mat[i][j])count++;elsecount = 0;left1[i][j] = count;//左侧连续1的个数}}count = 0;for(i = 0; i < m; i++) {for(j = 0; j < n; j++){if(mat[i][j] == 0)continue;width = n;//最大宽度for(k = i; k >= 0 && mat[k][j]; --k){	//往上搜索j位置为1的行width = min(width, left1[k][j]);//最小宽度决定了矩形在该行处存在的宽度count += width;//每种宽度可以形成一种矩形}}}return count;}
};

80 ms 14.7 MB


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/475156.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

iverilog命令选项解释

随着数字系统设计规模的增大&#xff0c;verilog文件几乎都会分成几个文件模块来管理&#xff0c;就如一个大工程一样&#xff0c;并且相互之间都会有调用关系&#xff0c;典型的就是&#xff0c;有一个文件要调用其他的文件实例&#xff0c;但是本身却不被任何模块所调用&…

matlab中ode23s使用方法,MATLAB中ode23函数,龙格库塔函数

今天说一说MATLAB中ode23函数的原理&#xff0c;在网上看了好多&#xff0c;但是不知道是怎么计算的&#xff0c;就知道是那么用的&#xff0c;但是最后结果咋回事不知道&#xff0c;今天来讲一讲是怎么计算的。首先来个程序&#xff1a;function feg6fun(t,y)f-y^3-2;end上面是…

勘误和声明

背景&#xff1a; 昨天在博客园浏览别人的文章《C# 不要自动四舍五入!》&#xff08;地址&#xff1a;http://www.cnblogs.com/eweb/archive/2012/05/18/2507468.html&#xff09;时&#xff0c;发现了自己之前的文章《C#&#xff0c;double和decimal数据类型以截断的方式保留指…

LeetCode 1503. 所有蚂蚁掉下来前的最后一刻(脑筋急转弯)

文章目录1. 题目2. 解题1. 题目 有一块木板&#xff0c;长度为 n 个 单位 。一些蚂蚁在木板上移动&#xff0c;每只蚂蚁都以 每秒一个单位 的速度移动。其中&#xff0c;一部分蚂蚁向 左 移动&#xff0c;其他蚂蚁向 右 移动。 当两只向 不同 方向移动的蚂蚁在某个点相遇时&a…

matlab多元线性回归bint,MATLAB中多元线性回归的例子课件

《MATLAB中多元线性回归的例子课件》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《MATLAB中多元线性回归的例子课件(12页珍藏版)》请在人人文库网上搜索。1、MATLAB中多元线性回归的例子,2.线性回归,bregress(y,X) b,bint,r,rint,sregress(y,X,alpha),输入: y因变量…

LeetCode 1246. 删除回文子数组(区间DP)

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 arr&#xff0c;每一次操作你都可以选择并删除它的一个 回文 子数组 arr[i], arr[i1], ..., arr[j]&#xff08; i < j&#xff09;。 注意&#xff0c;每当你删除掉一个子数组&#xff0c;右侧元素都会自行向前移动填补空…

开始学习ZendFramework框架了

开始学习ZendFramework框架了 开始学习ZendFramework框架了&#xff01;#&#xffe5;%……&&#xff08;加油&#xff01;&#xff01;&#xff01;posted on 2012-05-21 19:51 free-acking 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/acking/archive…

lamp ci框架 php配置文件,LAMP环境搭建

一、准备工作1、安装编译工具gcc、gcc-c注意解决依赖关系&#xff0c;推荐使用yum安装&#xff0c;若不能联网可使用安装光盘做为yum源——1)编辑yum配置文件&#xff1a;mount /dev/sr0 /mnt/cdromvim /etc/yum.repos.d/CentOS-Media.repo[c6-media]nameCentOS-$releasever - …

LeetCode 573. 松鼠模拟(数学)*

文章目录1. 题目2. 解题1. 题目 现在有一棵树&#xff0c;一只松鼠和一些坚果。位置由二维网格的单元格表示。 你的目标是找到松鼠收集所有坚果的最小路程&#xff0c;且坚果是一颗接一颗地被放在树下。 松鼠一次最多只能携带一颗坚果&#xff0c;松鼠可以向上&#xff0c;向下…

MySQL索引背后的数据结构及算法原理(转)

摘要 本文以MySQL数据库为研究对象&#xff0c;讨论与数据库索引相关的一些话题。特别需要说明的是&#xff0c;MySQL支持诸多存储引擎&#xff0c;而各种存储引擎对索引的支持也各不相同&#xff0c;因此MySQL数据库支持多种索引类型&#xff0c;如BTree索引&#xff0c;哈希索…

LeetCode 1273. 删除树节点(拓扑排序/DFS)

文章目录1. 题目2. 解题2.1 取巧解2.2 拓扑排序2.3 建图DFS1. 题目 给你一棵以节点 0 为根节点的树&#xff0c;定义如下&#xff1a; 节点的总数为 nodes 个&#xff1b; 第 i 个节点的值为 value[i] &#xff1b; 第 i 个节点的父节点是 parent[i] 。 请你删除节点值之和为…

查php源码授权后门,PHP授权系统+支持盗版入库+一键黑页后门注入+卡密授权

PHP授权系统支持盗版入库一键黑页后门注入卡密授权p stylewhite-space normal;PHP授权系统支持盗版入库一键黑页后门注入卡密授权/pp stylewhite-space normal;span stylecolor rgb255, 0, 0;升级会员可免积分下载本站99资源。/span/pp stylewhite-space normal;【最新修复版】…

WinForm邮件内容编辑器的简单实现

1、概述 在WinForm开发中&#xff0c;您可能会碰到发送邮件时内容编辑的问题&#xff0c;大部分开发人员第一个想法是希望将 WinForm中的内容编辑器做到和.NET 中类似FCK一样。今天我们就来介绍下如何实现和FCK一样的内容编辑器功能。 2、正文 邮件内容编辑器的问题,在…

上位机软件控制下位机PHP,采用stm32f103CB硬件I2C1/2(自制硬件)中断/DMA访问,四轴开源程序,DMP,PCB外框图纸库文件,USBToVCOM代码下位机...

四轴的ROLL&#xff0c;PITCH&#xff0c;YAW的部分算法程序&#xff1b;//二阶毕卡法void IMUupdate(float* Roll, float* Pitch, float* Yaw,float gx, float gy, float gz,float ax, float ay, float az, float* fusionDt){#ifdef IMUMpu_Setfloat delta_20;// float gx, gy…

LeetCode 1245. 树的直径(图的最大直径结论)

文章目录1. 题目2. 解题1. 题目 求树的最大直径。 2. 解题 类似题目&#xff1a;LeetCode 5538. 统计子树中城市之间最大距离&#xff08;枚举所有可能图的最大直径&#xff09; 结论&#xff1a;求无权无向图中的最长一条路径 先从任意一点P出发&#xff0c;找到离它最远的…

64 位 win7(2008 r2) 使用PLSQL Developer x86 32bit的解决方法

64 位 win7 使用PLSQL Developer 由于 PLSQL Developer 没有64位版本&#xff0c;所以在64位系统上运行该程序会报错&#xff0c;笔者为这个问题纠结了好几天&#xff0c;后来通过请教Google 动手实践&#xff0c;终于搞定了这个问题。现在把笔者解决的过程记录下来&#xff…

python的序列类型包括哪三类,Python常用的序列类型包括列表、元组和字典三种。...

表示M型&#xff0c;常用统中库管理系数据。边际位人的人消费每增增加加1均收均消倾向个单出数入所费支是指&#xff0c;列类边际消费民的年农倾向村居是(。的家品消庭食9年则2居民城镇出为费支&#xff0c;型包庭以3口镇家若城人计算。括列北省的份控股有及额为年国占河企业国…

LeetCode 545. 二叉树的边界(前序+后序)*

文章目录1. 题目2. 解题1. 题目 给定一棵二叉树&#xff0c;以逆时针顺序从根开始返回其边界。 边界按顺序包括左边界、叶子结点和右边界而不包括重复的结点。 (结点的值可能重复) 左边界的定义是从根到最左侧结点的路径。 右边界的定义是从根到最右侧结点的路径。 若根没有左…

解决“第一次偶然出现的异常”问题

现象 调试阶段&#xff0c;VS在“调试-输出”窗口中输出类似以下的异常信息&#xff1a; 在 System.ServiceModel.MessageHeaderException 中第一次偶然出现的“System.ServiceModel.dll”类型的异常.但代码继续正常执行&#xff0c;应用程序也未出错关闭。 解决 1、打开菜单“…

centos 7 ssh 安装mysql,Linux服务器远程ssh为centos7安装MySQL

最近为客户选了个云服务器操作系统选择CentOS 7.0 64位通过ssh远程安装MySQL5.6&#xff0c;与大家分享安装过程ssh远程客户端选择的是xshell,感觉比较好用&#xff0c;可以直接通过绑定的xftp进行远程目录的上传下载操作通过xshell先连接远程服务器&#xff0c;指定服务器ip&a…