import pprint
def set_zeros(matrix):
rows, cols = len(matrix), len(matrix[0])
hasZeroInFirstRow = any(matrix[0][j] == 0 for j in range(cols))
hasZeroInFirstCol = any(matrix[i][0] == 0 for i in range(rows))
for i in range(1, rows):
for j in range(1, cols):
if matrix[i][j] == 0:
matrix[i][0] = matrix[0][j] = 0
for i in range(1, rows):
for j in range(1, cols):
if matrix[i][0] == 0 or matrix[0][j] == 0:
matrix[i][j] = 0
if hasZeroInFirstRow:
matrix[0] = [0] * cols
if hasZeroInFirstCol:
for i in range(rows):
matrix[i][0] = 0
matrix = [[1, 0, 1, 1, 0],
[0, 1, 1, 1, 0],
[1, 1, 1, 1, 1],
[1, 0, 1, 1, 1],
[1, 1, 1, 1, 1]]
set_zeros(matrix)
pprint.pprint(matrix)
'''
run:
[[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 1, 1, 0],
[0, 0, 0, 0, 0],
[0, 0, 1, 1, 0]]
'''