力扣1074.元素和为目标值的子矩阵数量
-
前缀和 + 哈希表
- 见力扣363.
- 枚举上下边界转化一维前缀和,用哈希表储存出现次数
-
class Solution { public: int numSubmatrixSumTarget(vector<vector<int>>& matrix, int k) { int ans = 0; int m = matrix.size(),n = matrix[0].size(); for(int i=0;i<m;i++) { vector<int> sum(n); for(int j=i;j<m;j++) { for(int c=0;c<n;c++) sum[c] += matrix[j][c]; unordered_map<int,int> sumset; sumset[0] = 1; int s = 0; for(int v:sum) { s += v; if(sumset.find(s-k) != sumset.end()) ans += sumset[s-k]; sumset[s] ++; } } } return ans; } };