Count Square Submatrices with All Ones - Codeprg

Breaking

programing News Travel Computer Engineering Science Blogging Earning

Thursday, 13 August 2020

Count Square Submatrices with All Ones

Count Square Submatrices with All Ones


Count Square Submatrices with All Ones

Given a m * n matrix of ones and zeros, return how many square submatrices have all ones.

 

Example 1:

Input: matrix =
[
  [0,1,1,1],
  [1,1,1,1],
  [0,1,1,1]
]
Output: 15
Explanation: 
There are 10 squares of side 1.
There are 4 squares of side 2.
There is  1 square of side 3.
Total number of squares = 10 + 4 + 1 = 15.

Example 2:

Input: matrix = 
[
  [1,0,1],
  [1,1,0],
  [1,1,0]
]
Output: 7
Explanation: 
There are 6 squares of side 1.  
There is 1 square of side 2. 
Total number of squares = 6 + 1 = 7.

 

Constraints:

  • 1 <= arr.length <= 300
  • 1 <= arr[0].length <= 300
  • 0 <= arr[i][j] <= 1

 

 

class Solution {
public:
    int countSquares(vector<vector<int>>& matrix) {
        int n=matrix.size(),m=matrix[0].size();
        vector<vector<int> > mat(matrix.size(),vector<int>(matrix[0].size(),0));
        int ans=0;
        for(int  i=0;i<n;++i)
        {
            for(int j=0;j<m;++j)
            {
                if(i==0||j==0)
                {
                    mat[i][j]=matrix[i][j];
                }else if(matrix[i][j]==1)
                {
                    mat[i][j]=min(mat[i-1][j-1],min(mat[i-1][j],mat[i][j-1]))+matrix[i][j];
                }else{
                    mat[i][j]=matrix[i][j];
                }
                ans=ans+mat[i][j];
            }
        }
        return ans;
       
    }
};