LeetCode 73. 矩阵置零(两个标记变量)

73. 矩阵置零 

LeetCode 73. 矩阵置零(两个标记变量)_第1张图片

 

我们可以用矩阵的第一行和第一列作为两个标记数组,以达到 O(1)O(1) 的额外空间。

但这样会导致原数组的第一行和第一列被修改,无法记录它们是否原本包含 0。因此我们需要额外使用两个标记变量分别记录第一行和第一列是否原本包含 0。

在实际代码中,我们首先预处理出两个标记变量,接着使用其他行与列去处理第一行与第一列,

然后反过来使用第一行与第一列去更新其他行与列,最后使用两个标记变量更新第一行与第一列即可。

class Solution {
public:
    void setZeroes(vector>& matrix) {
int m=matrix.size();//行数
int n=matrix[0].size();//列数

bool flag_col0=false,flag_row0=false;//标记变量记录第一行、第一列是否有0
//如果第1列有0,置标记变量为true
for(int i=0;i

你可能感兴趣的:(LeetCode,算法,leetcode,矩阵,算法)