题目描述:
给定一个
m x n
的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。
一、解题思路
我建立了两个数组row(行)和column(列),最初赋值都为1,如果matrix数组的值为0时,相应的这两个数组的值变为0
二、代码
代码如下(示例):
void setZeroes(int** matrix, int matrixSize, int* matrixColSize){
bool *row=(int*)malloc(sizeof(int)*matrixSize);//行
bool *column=(int*)malloc(sizeof(int)*(*matrixColSize));//列
int i,j;
for(i=0;i<matrixSize;i++)
{
row[i]=1;
}
for(i=0;i<*matrixColSize;i++)
{
column[i]=1;
}//初赋值为1
for(i=0;i<matrixSize;i++)
{
for(j=0;j<*matrixColSize;j++)
{
if(matrix[i][j]==0)
{
row[i]=0;
column[j]=0;//变1为0
}
}
}
for(i=0;i<matrixSize;i++)
{
for(j=0;j<*matrixColSize;j++)
{
if(row[i]==0||column[j]==0)
{
matrix[i][j]=0;//覆盖
}
}
}
}