矩阵置零。给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。
示例 1:
1 |
|
示例 2:
1 |
|
思路一
首先遍历一遍记录需要置零的行和列,用额外的集合保存,然后再遍历一遍,将行或列在集合中的元素置零。时间复杂度 \(O(mn)\),空间复杂度 \(O(m+n)\)。
1 |
|
思路二
我们可以用每行和每列的第一个元素作为该行或该列是否置零的标识,即如果某个元素 matrix[i][j] = 0
,则令 matrix[i][0] = matrix[0][j] = 0
。值得注意的是,需要单独考虑第一行第一列的情况。
时间复杂度 \(O(mn)\),空间复杂度 \(O(1)\)。
1 |
|