Given an m x n
integer matrix matrix
, if an element is 0
, set its entire row and column to 0's
.
You must do it in place.
def setZeroes(matrix):
if not matrix or not matrix[0]:
return
m, n = matrix.length, matrix[0].length
first_row_has_zero = any(matrix[0][j] == 0 for j in range(n))
first_col_has_zero = any(matrix[i][0] == 0 for i in range(m))
# Use first row and column to mark zeros
for i in range(m):
for j in range(n):
if matrix[i][j] == 0:
matrix[i][0] = 0
matrix[0][j] = 0
# Zero out cells based on markers except the first row and first column
for i in range(1, m):
for j in range(1, n):
if matrix[i][0] == 0 or matrix[0][j] == 0:
matrix[i][j] = 0
# Zero out the first row if needed
if first_row_has_zero:
for j in range(n):
matrix[0][j] = 0
# Zero out the first column if needed
if first_col_has_zero:
for i in range(m):
matrix[i][0] = 0
Got blindsided by a question you didn’t expect?
Spend too much time studying?
Or simply don’t have the time to go over all 3000 questions?