Problem statement

https://binarysearch.com/problems/Big-Numbers/

Solution

Let us create m x n matrix ans with zeroes. Then we iterate M by rows and for each biggest element in row increase element by one. The same logic is for columns. In the end calculate number of 2s.

Complexity

It is O(mn) for time and space.

Code

class Solution:
    def solve(self, M):
        m, n = len(M), len(M[0])
        ans = [[0]*n for _ in range(m)]
        for i, row in enumerate(M):
            t = max(row)
            for j, x in enumerate(row):
                if x == t: ans[i][j] += 1

        for i, col in enumerate(zip(*M)):
            t = max(col)
            for j, x in enumerate(col):
                if x == t: ans[j][i] += 1

        return list(chain(*ans)).count(2)