Set Matrix Zeros Asked in: Oracle Amazon

 Given a matrix, A of size M x N of 0s and 1s. If an element is 0, set its entire row and column to 0.

Note: This will be evaluated on the extra memory used. Try to minimize the space and time complexity.


Input Format:

The first and the only argument of input contains a 2-d integer matrix, A, of size M x N.

Output Format:

Return a 2-d matrix that satisfies the given conditions.

Constraints:

1 <= N, M <= 1000
0 <= A[i][j] <= 1

Examples:

Input 1:
    [   [1, 0, 1],
        [1, 1, 1], 
        [1, 1, 1]   ]

Output 1:
    [   [0, 0, 0],
        [1, 0, 1],
        [1, 0, 1]   ]

Input 2:
    [   [1, 0, 1],
        [1, 1, 1],
        [1, 0, 1]   ]

Output 2:
    [   [0, 0, 0],
        [1, 0, 1],
        [0, 0, 0]   ]
Solution:

class Solution:
    # @param A : list of list of integers
    # @return the same list modified
    def setZeroes(self, A):
        m=len(A)
        n=len(A[0])
        x=set()
        y=set()
        for i in range(m):
            for j in range(n):
                if A[i][j]==0:
                    x.add(i)
                    y.add(j)
        for i in x:
            A[i]=[0]*n 
        
        for j in y:
            for i in range(m):
                A[i][j]=0
        
        return(A)


Solution Screenshot:








Comments

Popular posts from this blog

Trouble with the Number System

Residue Arithmetic

Perfect Peak of Array