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

示例 1:

输入:mat = [[1,0,1],
[1,1,0],
[1,1,0]]
输出:13
解释:
有 6 个 1x1 的矩形。
有 2 个 1x2 的矩形。
有 3 个 2x1 的矩形。
有 1 个 2x2 的矩形。
有 1 个 3x1 的矩形。
矩形数目总共 = 6 + 2 + 3 + 1 + 1 = 13 。
示例 2:

输入:mat = [[0,1,1,0],
[0,1,1,1],
[1,1,1,0]]
输出:24
解释:
有 8 个 1x1 的子矩形。
有 5 个 1x2 的子矩形。
有 2 个 1x3 的子矩形。
有 4 个 2x1 的子矩形。
有 2 个 2x2 的子矩形。
有 2 个 3x1 的子矩形。
有 1 个 3x2 的子矩形。
矩形数目总共 = 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

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

【题目分析】
只要枚举每一行,处理出一个left[i][j],表示从(i,j)点开始向左能够到达的连续格子数量,然后对于每个格子,向上遍历,统计每一行的贡献即可。

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

例如对于上图,处理处left数组:

0 1 2 0
0 1 2 3
1 2 3 0

接下来,枚举每一个格子
例如枚举到如图的(2,2,)点

向上枚举,则根据上方已知的left不难得出每一行的贡献

就这样。。。

class Solution {public:int numSubmat(vector<vector<int>>& mat) {int left[390][390], ans = 0, col;memset(left, 0, sizeof(left));for(int i = 0; i < mat.size(); i++){for(int j = 0; j < mat[i].size(); j++){if(!mat[i][j])left[i][j] = 0;else if(!j)left[i][j] = 1;else left[i][j] = left[i][j-1] + 1;col = 150;for(int k = i; k > -1 && left[k][j]; k--){col = min(col, left[k][j]);ans += col;}}}return ans;}
};

【LeetCode】5454. 统计全 1 子矩形相关推荐

  1. 5454. 统计全 1 子矩形(Leetcode 196周赛)

    5454. 统计全 1 子矩形 给你一个只包含 0 和 1 的 rows * columns 矩阵 mat ,请你返回有多少个 子矩形 的元素全部都是 1 . 示例 1: 输入:mat = [[1,0 ...

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

    文章目录 1. 题目 2. 解题 1. 题目 给你一个只包含 0 和 1 的 rows * columns 矩阵 mat , 请你返回有多少个 子矩形 的元素全部都是 1 . 示例 1: 输入:mat ...

  3. 力扣比赛 5454. 统计全 1 子矩形

    给你一个只包含 0 和 1 的 rows * columns 矩阵 mat ,请你返回有多少个 子矩形 的元素全部都是 1 . 示例 1: 输入:mat = [[1,0,1], [1,1,0], [1 ...

  4. jq遍历子元素_leetcode第196周赛第三题统计全 1 子矩形

    leetcode1504. 统计全 1 子矩形 给你一个只包含 0 和 1 的 rows * columns 矩阵 mat ,请你返回有多少个 子矩形 的元素全部都是 1 . 示例 1: 输入:mat ...

  5. leetcode 1504. Count Submatrices With All Ones | 1504. 统计全 1 子矩形(单调栈)

    题目 https://leetcode.com/problems/count-submatrices-with-all-ones/ 题解 本题与 leetcode 84. Largest Rectan ...

  6. leetcode1504. 统计全 1 子矩形(动态规划)

    给你一个只包含 0 和 1 的 rows * columns 矩阵 mat ,请你返回有多少个 子矩形 的元素全部都是 1 . 示例 1: 输入:mat = [[1,0,1], [1,1,0], [1 ...

  7. LeetCode 1277. 统计全为 1 的正方形子矩阵(DP)

    1. 题目 给你一个 m * n 的矩阵,矩阵中的元素不是 0 就是 1,请你统计并返回其中完全由 1 组成的 正方形 子矩阵的个数. 示例 1: 输入:matrix = [[0,1,1,1],[1, ...

  8. C++描述 LeetCode 5677. 统计同构子字符串的数目

    C++描述 LeetCode 5677. 统计同构子字符串的数目   大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在CSDN中写 ...

  9. LeetCode 1905. 统计子岛屿

    LeetCode 1905. 统计子岛屿 题目 思路 代码 题目 链接: https://leetcode.cn/problems/count-sub-islands/ 给你两个 m x n 的二进制 ...

最新文章

  1. AI视频行为分析系统项目复盘——技术篇2:视频流GPU硬解码
  2. BZOJ 2957楼房重建
  3. 手把手教你安装Linux虚拟机
  4. sl中几个简单变量的获取
  5. mysql的一个字段最多能插入多少数据?我们存入text类型的值上限是多大?
  6. Little Sub and Johann
  7. gitlab 分支操作笔记\新建远程分支\抓取远程分支\复制远程\删除分支
  8. 完整的tensorflow训练、保存和离线加载模型(以mnist为例)
  9. 基于javaweb房屋租赁系统设计与实现
  10. 学习matlab(十八)——小波分析
  11. 交互设计沉思录:顶尖设计专家Jon Kolko的经验与心得(原书第2版)
  12. 完成端口学习笔记(一):完成端口+控制台 实现文件拷贝
  13. android英雄无敌 中文版下载地址,英雄无敌3手机版
  14. 详解区块链,智能合约,去中心化应用
  15. 设计一个Dog类,包含名字,年龄,颜色三个属性
  16. 欢迎大家加入我的Q群
  17. 现代医院智能化系统方案及其难点探讨
  18. 怎么调用计算机任务管理器,如何使用任务管理器
  19. 人脸识别测温一体道闸机省时更省力
  20. 眨眼控制 眨眼检测 眼球运动来控制指令

热门文章

  1. 小白零基础C#学习笔记
  2. 深度学习之数据处理方法概述
  3. DQN、DDQN、Dueling DQN、PER DQN
  4. 腾讯云轻量服务器在线安装MySQL
  5. JAVA interrupt、interrupted和isInterrupted的区别
  6. 关于Jupyter Notebook的环境配置
  7. java套娃_Java也有俄罗斯套娃,内部类剖析
  8. Java-String的用法
  9. 安装和配置PhysX
  10. 【图像融合】基于matlab高分辨率全色图IHS图像融合(含评价指标)【含Matlab源码 2406期】