元素和为目标值的子矩阵数量
力扣 1074. 元素和为目标值的子矩阵数量
题目说明
给出矩阵
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.length <= 1001 <= matrix[0].length <= 100-1000 <= matrix[i] <= 1000-10^8 <= target <= 10^8
示例
示例 1:
1 | 输入:matrix = [[0,1,0],[1,1,1],[0,1,0]], target = 0 |
示例 2:
1 | 输入:matrix = [[1,-1],[-1,1]], target = 0 |
示例 3:
1 | 输入:matrix = [[904]], target = 0 |
笔者理解
此题是一道二维数组算法问题,在力扣题库中被定义为困难题。
解法
当笔者阅读完此题后,发现此题算是和矩形区域不超过K的最大数值和差不多的题目,是基于二维区域和检索 - 矩阵不可变的解法基础上的,让我们来看看具体如何实现的吧。
实现
1 | public int numSubmatrixSumTarget(int[][] matrix, int target) { |
时间效率一般,空间效率还行,可见此解法还比较适合此题;
总结
本题是今天的一题,难度是为困难,感兴趣的朋友都可以去尝试一下,此题还有其他更多的解法,朋友们可以自己逐一尝试。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 徐年の博客!







