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;
}