Skip to content

Latest commit

 

History

History
113 lines (88 loc) · 2.42 KB

File metadata and controls

113 lines (88 loc) · 2.42 KB

73. 矩阵置零

给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。

示例 1:

{image_attr}
输入:matrix =
[
  [1,1,1],
  [1,0,1],
  [1,1,1]
]

输出:
[
  [1,0,1],
  [0,0,0],
  [1,0,1]
]

示例 2:

{image_attr}
输入: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,最后再单独处理首行和首列。

{image_attr}
一刷
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]