POTD #5 - Set Matrix Zeroes | Geeks For Geeks
POTD #5 - Set Matrix Zeroes | Geeks For Geeks
{% raw %}
Problem Statement
Geeks For Geeks : https://www.geeksforgeeks.org/problems/set-matrix-zeroes/1
You are given a 2D matrix mat[][] of size n×m. The task is to modify the matrix such that if mat[i][j] is 0, all the elements in the i-th row and j-th column are set to 0 and do it in constant space complexity.
Input: mat[][] = [[1, -1, 1], [-1, 0, 1], [1, -1, 1]]Output: [[1, 0, 1], [0, 0, 0], [1, 0, 1]]Explanation: mat[1][1] = 0, so all elements in row 1 and column 1 are updated to zeroes.
Input: mat[][] = [[0, 1, 2, 0], [3, 4, 5, 2], [1, 3, 1, 5]]Output: [[0, 0, 0, 0], [0, 4, 5, 0], [0, 3, 1, 0]]Explanation: mat[0][0] and mat[0][3] are 0s, so all elements in row 0, column 0 and column 3 are updated to zeroes.
My Approach
- Iterate through the matrix and check whether mat[i][j] is zero. If its zero then row i and col j need to made as zeros.
- Collect them in a set
- Finally iterate through the set and update the matrix.
#User function Template for python3class Solution: def setMatrixZeroes(self, mat): rows_to_zeros = set() cols_to_zeros = set() rows = len(mat) cols = len(mat[0]) for i in range(rows): for j in range(cols): if mat[i][j] == 0: rows_to_zeros.add(i) cols_to_zeros.add(j) for row in rows_to_zeros: for itr in range(cols): mat[row][itr] = 0 for col in cols_to_zeros: for itr in range(rows): mat[itr][col] = 0 return mat

{% endraw %}
This post is licensed under CC BY 4.0 by the author.