Find Number of Elements in Matrix Following Row Column Criteria in Python



Suppose we have a binary matrix; we have to find the number of elements in matrix that follows the following rules −

  • matrix[r, c] = 1

  • matrix[r, j] = 0 for every j when j is not equal to c and matrix[i, c] = 0 for every i when i is not equal to r.

So, if the input is like

0 0 1
1 0 0
0 1 0

then the output will be 3, because we have cells (0,2), (1,0) and (2,1) those meet the criteria.

To solve this, we will follow these steps −

  • if matrix is empty, then

    • return 0

  • row := a list of sum of all row entries in matrix

  • col := a list of sum of all column entries in matrix

  • m := row count of matrix

  • n := column count of matrix

  • res := 0

  • for r in range 0 to m - 1, do

    • for c in range 0 to n - 1, do

      • if matrix[r, c] is 1 and row[r] is 1 and col[c] is also 1, then

        • res := res + 1

  • return res

Example

Let us see the following implementation to get better understanding

def solve(matrix):
   if not matrix:
      return 0

   row = [sum(r) for r in matrix]
   col = [sum(c) for c in zip(*matrix)]

   m, n = len(matrix), len(matrix[0])
   res = 0
   for r in range(m):
      for c in range(n):
         if matrix[r][c] == 1 and row[r] == 1 and col[c] == 1:
            res += 1
   return res

matrix = [
   [0, 0, 1],
   [1, 0, 0],
   [0, 1, 0]
]
print(solve(matrix))

Input

[[0, 0, 1],[1, 0, 0],[0, 1, 0]]

Output

3
Updated on: 2021-10-11T07:56:54+05:30

624 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements