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

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

你可能感兴趣的:(leetcode,矩阵,算法)