【LeetCode】5454. 统计全 1 子矩形
给你一个只包含 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 子矩形相关推荐
- 5454. 统计全 1 子矩形(Leetcode 196周赛)
5454. 统计全 1 子矩形 给你一个只包含 0 和 1 的 rows * columns 矩阵 mat ,请你返回有多少个 子矩形 的元素全部都是 1 . 示例 1: 输入:mat = [[1,0 ...
- LeetCode 1504. 统计全 1 子矩形(记录左侧的连续1的个数)
文章目录 1. 题目 2. 解题 1. 题目 给你一个只包含 0 和 1 的 rows * columns 矩阵 mat , 请你返回有多少个 子矩形 的元素全部都是 1 . 示例 1: 输入:mat ...
- 力扣比赛 5454. 统计全 1 子矩形
给你一个只包含 0 和 1 的 rows * columns 矩阵 mat ,请你返回有多少个 子矩形 的元素全部都是 1 . 示例 1: 输入:mat = [[1,0,1], [1,1,0], [1 ...
- jq遍历子元素_leetcode第196周赛第三题统计全 1 子矩形
leetcode1504. 统计全 1 子矩形 给你一个只包含 0 和 1 的 rows * columns 矩阵 mat ,请你返回有多少个 子矩形 的元素全部都是 1 . 示例 1: 输入:mat ...
- leetcode 1504. Count Submatrices With All Ones | 1504. 统计全 1 子矩形(单调栈)
题目 https://leetcode.com/problems/count-submatrices-with-all-ones/ 题解 本题与 leetcode 84. Largest Rectan ...
- leetcode1504. 统计全 1 子矩形(动态规划)
给你一个只包含 0 和 1 的 rows * columns 矩阵 mat ,请你返回有多少个 子矩形 的元素全部都是 1 . 示例 1: 输入:mat = [[1,0,1], [1,1,0], [1 ...
- LeetCode 1277. 统计全为 1 的正方形子矩阵(DP)
1. 题目 给你一个 m * n 的矩阵,矩阵中的元素不是 0 就是 1,请你统计并返回其中完全由 1 组成的 正方形 子矩阵的个数. 示例 1: 输入:matrix = [[0,1,1,1],[1, ...
- C++描述 LeetCode 5677. 统计同构子字符串的数目
C++描述 LeetCode 5677. 统计同构子字符串的数目 大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在CSDN中写 ...
- LeetCode 1905. 统计子岛屿
LeetCode 1905. 统计子岛屿 题目 思路 代码 题目 链接: https://leetcode.cn/problems/count-sub-islands/ 给你两个 m x n 的二进制 ...
最新文章
- AI视频行为分析系统项目复盘——技术篇2:视频流GPU硬解码
- BZOJ 2957楼房重建
- 手把手教你安装Linux虚拟机
- sl中几个简单变量的获取
- mysql的一个字段最多能插入多少数据?我们存入text类型的值上限是多大?
- Little Sub and Johann
- gitlab 分支操作笔记\新建远程分支\抓取远程分支\复制远程\删除分支
- 完整的tensorflow训练、保存和离线加载模型(以mnist为例)
- 基于javaweb房屋租赁系统设计与实现
- 学习matlab(十八)——小波分析
- 交互设计沉思录:顶尖设计专家Jon Kolko的经验与心得(原书第2版)
- 完成端口学习笔记(一):完成端口+控制台 实现文件拷贝
- android英雄无敌 中文版下载地址,英雄无敌3手机版
- 详解区块链,智能合约,去中心化应用
- 设计一个Dog类,包含名字,年龄,颜色三个属性
- 欢迎大家加入我的Q群
- 现代医院智能化系统方案及其难点探讨
- 怎么调用计算机任务管理器,如何使用任务管理器
- 人脸识别测温一体道闸机省时更省力
- 眨眼控制 眨眼检测 眼球运动来控制指令