Count Submatrices With All Ones LeetCode solution in C++
1class Solution {2public:3int numSubmat(vector<vector<int>> &mat) {4int n = mat.size(), m = mat[0].size();5vector<vector<int>> v(n, vector<int>(m + 1, 0));6for (int i = 0; i < n; i++) {7for (int j = 0; j < m; j++) {8v[i][j + 1] = v[i][j] + mat[i][j];9}10}11int res = 0;12for (int i = 0; i < m; i++) {13for (int j = i + 1; j <= m; j++) {14int cnt = 0;15for (int k = 0; k < n; k++) {16int x = v[k][j] - v[k][i];17if (x == (j - i)) {18cnt++;19} else {20res += cnt * (cnt + 1) / 2;21cnt = 0;22}23}24res += cnt * (cnt + 1) / 2;25}26}27return res;28}29};