力扣比赛 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
提示:
1 <= rows <= 150
1 <= columns <= 150
0 <= mat[i][j] <= 1
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/count-submatrices-with-all-ones
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路
用一个矩阵数组left保存当前矩阵的左侧最长为1的个数,例如下标为i,j时,计算j左侧连续为1的个数。计算矩阵个数时,遍历整个矩阵,计算下标为i,j时,遍历left[(i-1)][j] ~left[0][j],统计当前最小值,即为一个全1的矩阵,加到总计的矩阵数。
class Solution {public:int numSubmat(vector<vector<int>>& mat) {int n = mat.size();int m = mat[0].size();vector<vector<int>> left(n,vector<int>(m,0));for(int i = 0;i < n;i++){int num = 0;for(int j = 0;j < m;j++){if(mat[i][j] == 1) num++;else num = 0;left[i][j] = num;}}int ans = 0;for(int i = 0; i < n; i++){for(int j = 0; j < m; j++){int mins = 9999;for(int k = i; k >= 0; k--){mins = min(left[k][j],mins);ans += mins;}}}return ans;}
};
力扣比赛 5454. 统计全 1 子矩形相关推荐
- 5454. 统计全 1 子矩形(Leetcode 196周赛)
5454. 统计全 1 子矩形 给你一个只包含 0 和 1 的 rows * columns 矩阵 mat ,请你返回有多少个 子矩形 的元素全部都是 1 . 示例 1: 输入:mat = [[1,0 ...
- 【LeetCode】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. 统计全 1 子矩形(记录左侧的连续1的个数)
文章目录 1. 题目 2. 解题 1. 题目 给你一个只包含 0 和 1 的 rows * columns 矩阵 mat , 请你返回有多少个 子矩形 的元素全部都是 1 . 示例 1: 输入:mat ...
- leetcode1504. 统计全 1 子矩形(动态规划)
给你一个只包含 0 和 1 的 rows * columns 矩阵 mat ,请你返回有多少个 子矩形 的元素全部都是 1 . 示例 1: 输入:mat = [[1,0,1], [1,1,0], [1 ...
- leetcode 1504. Count Submatrices With All Ones | 1504. 统计全 1 子矩形(单调栈)
题目 https://leetcode.com/problems/count-submatrices-with-all-ones/ 题解 本题与 leetcode 84. Largest Rectan ...
- 力扣 560. 和为 K 的子数组
题目 给你一个整数数组 nums 和一个整数 k ,请你统计并返回该数组中和为 k 的连续子数组的个数. 示例 输入:nums = [1,1,1], k = 2 输出:2 输入:nums = [1,2 ...
- 力扣 713. 乘积小于K的子数组
题目 给定一个正整数数组 nums和整数 k . 请找出该数组内乘积小于 k 的连续的子数组的个数. 示例 输入: nums = [10,5,2,6], k = 100 输出: 8 解释: 8个乘积小 ...
- C++算法学习(力扣:1254. 统计封闭岛屿的数目)
有一个二维矩阵 grid ,每个位置要么是陆地(记号为 0 )要么是水域(记号为 1 ). 我们从一块陆地出发,每次可以往上下左右 4 个方向相邻区域走,能走到的所有陆地区域,我们将其称为一座「岛屿」 ...
最新文章
- 独家 | AutoFlip:智能化视频剪裁的开源框架(附链接)
- python判断操作系统类型
- linux终端帮助,Linux下的帮助命令
- html走马观花效果,走马观花台湾行 用EF-S 10-18来记录风景
- java枚举类中字段有没有必要加final____枚举类字段 Field ‘xxx‘ may be ‘final‘
- java query object_Object Query Language (OQL) query 基本使用
- Javascript浅谈之this
- android无网络状态栏,Android中检查网络连接状态的变化,无网络时跳转到设置界面...
- eclipse下properties配置文件中文乱码解决
- 计算机代数与数论pdf,基础数论算法 - maTHμ - 计算机代数系统.pdf
- js读取txt文件中的内容
- 股票语音播报软件 炒股语音实时播报
- 虚拟偶像春天来临,谁能从中脱颖而出?
- antdv 表格标题换行
- 硬件设计之一——电源设计01:电源防护
- Java语言每日一练—第9天:根据输入的数据判断是星期几
- (转) 机器学习很有趣Part6:怎样使用深度学习进行语音识别
- ArcGIS在城市规划中的应用
- vue.js前端开发技术读书笔记二:vue数据绑定
- BootStrap框架-旅游网页设计