1074. Number of Submatrices That Sum to Target
Description

Tags
Solution
Complexity
Code
Reference
Last updated

Last updated
Input: matrix = [[0,1,0],[1,1,1],[0,1,0]], target = 0
Output: 4
Explanation: The four 1x1 submatrices that only contain 0.Input: matrix = [[1,-1],[-1,1]], target = 0
Output: 5
Explanation: The two 1x2 submatrices, plus the two 2x1 submatrices, plus the 2x2 submatrix.func numSubmatrixSumTarget(matrix [][]int, target int) int {
var ans int
for i := range matrix { // upper bound
colSum := make([]int, len(matrix[0])) // columns sum
for _, row := range matrix[i:] { // lower bound
for j, v := range row {
colSum[j] += v
}
ans += subarraySum(colSum, target)
}
}
return ans
}
func subarraySum(nums []int, k int) int {
ans, preSum, m := 0, 0, map[int]int{0: 1}
for _, num := range nums {
preSum += num
ans += m[preSum-k]
m[preSum]++
}
return ans
}