编写一个算法,若M*N矩阵中某个元素为0,则将其所在的行与列清零。
void setZeros(int **matrix, int lrow, int lcol)
{
bool *row = new bool[lrow];
bool *column = new bool[lcol];
//记录值为0的元素所在的行索引和列索引
for (int i = 0; i < lrow; i++)
{
for (int j = 0; j < lcol; j++)
{
if (matrix[i][j] == 0)
{
row[i] = true;
column[j] = true;
}
}
}
//若行i或列j有个元素为0,则将arr[i][j]置为0
for (int i = 0; i < lrow; i++)
{
for (int j = 0; j < lcol; j++)
{
if (row[i] || column[j])
{
matrix[i][j] = 0;
}
}
}
}
为了提高空间利用率,我们可以选用位向量替换bool数组。
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-10-10 20:39:36