leetcode 1074. 元素和为目标值的子矩阵数量(map+前缀和)
给出矩阵 matrix 和目标值 target,返回元素总和等于目标值的非空子矩阵的数量。
子矩阵 x1, y1, x2, y2 是满足 x1 <= x <= x2 且 y1 <= y <= y2 的所有单元 matrix[x][y] 的集合。
如果 (x1, y1, x2, y2) 和 (x1’, y1’, x2’, y2’) 两个子矩阵中部分坐标不同(如:x1 != x1’),那么这两个子矩阵也不同。
示例 1:
输入:matrix = [[0,1,0],[1,1,1],[0,1,0]], target = 0
输出:4
解释:四个只含 0 的 1x1 子矩阵。
示例 2:
输入:matrix = [[1,-1],[-1,1]], target = 0
输出:5
解释:两个 1x2 子矩阵,加上两个 2x1 子矩阵,再加上一个 2x2 子矩阵。
示例 3:
输入:matrix = [[904]], target = 0
输出:0
解题思路
遍历所有可以可选的上下边界[i,j]。
- 在上下界已经确定的情况下,维护前缀和数组cnt[i],代表第i列所有元素的累加和。
- 从第一列开始不断累加,累加到cur当中,cur代表上下界确定的情况下,累加起来的前n列
- 使用map记录下前n列累加和为k1的情况,当遍历到前n2列时,累加和为k2时,若满足k2-k1=target,即说明子矩阵[n,n2]的和为target。
代码
func numSubmatrixSumTarget(matrix [][]int, target int) (res int) {for i := 0; i < len(matrix); i++ {col := make([]int, len(matrix[0]))for j := i; j < len(matrix); j++ {for z := 0; z < len(matrix[0]); z++ {col[z] += matrix[j][z]}func() {m := make(map[int]int)m[0] = 1cur := 0for i := 0; i < len(matrix[0]); i++ {cur += col[i]i2, has := m[cur-target]if has {res += i2}m[cur]++}}()}}return}
leetcode 1074. 元素和为目标值的子矩阵数量(map+前缀和)相关推荐
- LeetCode 1074. 元素和为目标值的子矩阵数量(2d前缀和+哈希)
文章目录 1. 题目 2. 解题 1. 题目 给出矩阵 matrix 和目标值 target,返回元素总和等于目标值的非空子矩阵的数量. 子矩阵 x1, y1, x2, y2 是满足 x1 <= ...
- 1074. 元素和为目标值的子矩阵数量
给出矩阵 matrix 和目标值 target,返回元素总和等于目标值的非空子矩阵的数量. 子矩阵 x1, y1, x2, y2 是满足 x1 <= x <= x2 且 y1 <= ...
- leetcode 1074. Number of Submatrices That Sum to Target(和为target的子矩阵个数)
题目中让找出有多少个子矩阵,其元素的和为target. 子矩阵的范围:x1 <= x <= x2, y1 <= y <= y2 4个边界有任一个不同,都算不同的子矩阵. 思路: ...
- LeetCode 5655 重新排列后的最大子矩阵
LeetCode 5655 重新排列后的最大子矩阵 题目链接 给你一个二进制矩阵 matrix ,它的大小为 m x n ,你可以将 matrix 中的 列 按任意顺序重新排列. 请你返回最优方案下将 ...
- 【LeetCode 深度优先搜索专项】不同岛屿的数量 II(711)
文章目录 1. 题目 1.1 示例 1.2 说明 1.3 提示 1.4 进阶 2. 解法一(深度优先搜索) 2.1 分析 2.2 解答 2.3 复杂度 1. 题目 给定一个 m×nm \times n ...
- 数组中的元素转成Number或者String---数组map方法
数组中的元素转成Number类型 let num: any = ["1", "2", "3"]; num = num.map(Number) ...
- LeetCode 2148. 元素计数
文章目录 1. 题目 2. 解题 1. 题目 给你一个整数数组 nums ,统计并返回在 nums 中同时具有一个严格较小元素和一个严格较大元素的元素数目. 示例 1: 输入:nums = [11,7 ...
- LeetCode 1887. 使数组元素相等的减少操作次数(map)
文章目录 1. 题目 2. 解题 1. 题目 给你一个整数数组 nums ,你的目标是令 nums 中的所有元素相等.完成一次减少操作需要遵照下面的几个步骤: 找出 nums 中的 最大 值.记这个值 ...
- LeetCode 1727. 重新排列后的最大子矩阵(前缀和+排序)
文章目录 1. 题目 2. 解题 1. 题目 给你一个二进制矩阵 matrix ,它的大小为 m x n ,你可以将 matrix 中的 列 按任意顺序重新排列. 请你返回最优方案下将 matrix ...
最新文章
- 细说 Lambda 表达式
- C/C++杂记:虚函数的实现的基本原理 虚函数表
- python如何提高工作效率_用Python的这3个优点,让工作效率提升一倍
- linux查看命令的帮助文档,Linux查看命令和帮助文件位置
- 通过PEB遍历进程模块(x64/wow4)
- [译]Vulkan教程(08)逻辑设备和队列
- 简单的实现HTTP密码验证登陆
- 14.19 InnoDB and MySQL Replication InnoDB 和MySQL 复制:
- spwm波正弦表生成程序,亲测实用有效!!!!!!速度摘取
- MATLAB App Designer 制作一个简易计算器的课堂作业
- Flink web ui面板功能简述
- 方法教程:如何下载网易云音乐上的视频到本地电脑
- “沉浸式大型线下游戏”?看看这次腾讯TGC上如何玩很大!
- 列表到字典的函数,针对好玩游戏物品清单
- linux收发包内核进程名称,Linux内核IP Queue机制的分析(一)——用户态接收数据包...
- 最新版YOLOv5 6.1使用教程
- docker容器启动成功外界却无法访问
- win11音频无声音排查解决方案
- Nmon服务器资源监控工具
- 前端开发面试题之http和https详解