Interval & Math Target: 15s
Using first row/col as markers gives O(1) extra space for zero-setting.
row0 = any(m[0][j] == 0 for j in range(n))
col0 = any(m[i][0] == 0 for i in range(r))
for i in range(1, r):
for j in range(1, n):
if m[i][j] == 0:
m[i][0] = m[0][j] = 0
Type it from memory. Go.