跳到主要内容

1074.元素和为目标值的子矩阵数量

链接:1074.元素和为目标值的子矩阵数量
难度:Hard
标签:数组、哈希表、矩阵、前缀和
简介:给出矩阵 matrix 和目标值 target,返回元素总和等于目标值的非空子矩阵的数量。

题解 1 - typescript

  • 编辑时间:2021-05-29
  • 执行用时:500ms
  • 内存消耗:42.3MB
  • 编程语言:typescript
  • 解法介绍:暴力循环。
function numSubmatrixSumTarget(matrix: number[][], target: number): number {
const rowLen = matrix.length;
const colLen = matrix[0].length;
const prefixSumList: number[][] = new Array(rowLen + 1)
.fill(0)
.map(_ => new Array(colLen + 1).fill(0));
for (let row = 0; row < rowLen; row++) {
for (let col = 0; col < colLen; col++) {
prefixSumList[row + 1][col + 1] =
prefixSumList[row + 1][col] +
prefixSumList[row][col + 1] -
prefixSumList[row][col] +
matrix[row][col];
}
}
let ans = 0;
for (let endRow = 0; endRow < rowLen; endRow++) {
for (let endCol = 0; endCol < colLen; endCol++) {
for (let startRow = 0; startRow <= endRow; startRow++) {
for (let startCol = 0; startCol <= endCol; startCol++) {
if (
prefixSumList[endRow + 1][endCol + 1] -
prefixSumList[endRow + 1][startCol] -
prefixSumList[startRow][endCol + 1] +
prefixSumList[startRow][startCol] ===
target
) {
ans++;
}
}
}
}
}
return ans;
}