Skip to content

Set Matrix Zero

# https://takeuforward.org/data-structure/set-matrix-zero/
"""
Problem Statement:
Given a matrix if an element in the matrix is 0 then you will have to set its entire column and row to 0 and then return the matrix.

Input: matrix = [[1,1,1],[1,0,1],[1,1,1]]
Output: [[1,0,1],[0,0,0],[1,0,1]]
"""

from typing import List


def set_zeroes(matrix: List) -> List:
    row_zero, col_zero = set(), set()
    for i in range(len(matrix)):
        for j in range(len(matrix[0])):
            if matrix[i][j] == 0:
                row_zero.add(i)
                col_zero.add(j)

    for i in range(len(matrix)):
        for j in range(len(matrix[0])):
            if i in row_zero or j in col_zero:
                # set that entire row col to zero
                matrix[i][j] = 0
    return matrix


if __name__ == "__main__":
    print(
        set_zeroes(matrix=[[1, 1, 1], [1, 0, 1], [1, 1, 1]])
    )  # [[1,0,1],[0,0,0],[1,0,1]]

"""
Time Complexity : O(2*(N*M)
Space Complexity : O(1)
"""