给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。
示例 1:
输入:matrix = [ [1,1,1], [1,0,1], [1,1,1] ] 输出: [ [1,0,1], [0,0,0], [1,0,1] ]
示例 2:
输入:matrix = [ [0,1,2,0], [3,4,5,2], [1,3,1,5] ] 输出: [ [0,0,0,0], [0,4,5,0], [0,3,1,0] ]
提示:
-
m == matrix.length -
n == matrix[0].length -
1 <= m, n <= 200 -
-231 <= matrix[i][j] <= 231 - 1
进阶:
-
一个直观的解决方案是使用 \$O(mn)\$ 的额外空间,但这并不是一个好的解决方案。
-
一个简单的改进方案是使用 \$O(m + n)\$ 的额外空间,但这仍然不是最好的解决方案。
-
你能想出一个仅使用常量空间的解决方案吗?
最简单的办法就是记录出现 0 的行号和列号,最后根据行号和列号设置 0。取巧的办法是把出现 0 的位置在首行和首列标记一下,首行和首列需要首先检查一下是否已经包含 0,最后再单独处理首行和首列。
- 一刷
-
link:{sourcedir}/_0073_SetMatrixZeroes.java[role=include] - 二刷(路标)
-
link:{sourcedir}/_0073_SetMatrixZeroes_20.java[role=include] - 二刷(位元素 )
-
link:{sourcedir}/_0073_SetMatrixZeroes_21.java[role=include] - 二刷(头部标记)
-
link:{sourcedir}/_0073_SetMatrixZeroes_22.java[role=include]


