Every day a leetcode
题目来源:73. 矩阵置零
解法1:2个标记数组
使用2个标记数组,分别记录行,列置0信息。
第一次遍历矩阵,当matrix[i][j]=0时,将row[i],col[j]置0。
第二次遍历矩阵,当row[i]或col[j]为0时,将matrix[i][j]置0。
代码:
void setZeroes(int** matrix, int matrixSize, int* matrixColSize){
int m=matrixSize;
int n=matrixColSize[0];
int row[m];
int col[n];
memset(row,0,sizeof(row));
memset(col,0,sizeof(col));
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
if(matrix[i][j] == 0)
{
row[i]=1;
col[j]=1;
}
}
}
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
if(row[i] == 1 || col[j] == 1)
{
matrix[i][j]=0;
}
}
}
}
结果:
其他方法
这些方法可以节省空间,详情见于:矩阵置零官方题解。