矩阵置0
描述
给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。
示例 1:
输入:
[
[1,1,1],
[1,0,1],
[1,1,1]
]
输出:
[
[1,0,1],
[0,0,0],
[1,0,1]
]
思路和代码
用一个row[]数组和col[]数组表示某一行某一列需不需要置为0,首先遍历矩阵,若matrix[i][j] == 0,则row[i]和col[j]需要置0。
注意不要在遍历的时候就置0,一定要在遍历完统一置0。
class Solution {
public:
void setZeroes(vector<vector<int>>& matrix) {
int rows = matrix.size();
int cols = matrix[0].size();
bool row[rows] = {false};
bool col[cols] = {false};
for(int i=0; i<rows; i++)
{
for(int j=0; j<cols; j++)
{
if(matrix[i][j] == 0)
{
row[i] = true;
col[j] = true;
}
}
}
for(int i=0; i<rows; i++)
{
if(row[i] == true)
{
for(int j=0; j<cols; j++)
{
matrix[i][j] = 0;
}
}
}
for(int i=0; i<cols; i++)
{
if(col[i] == true)
{
for(int j=0; j<rows; j++)
{
matrix[j][i] = 0;
}
}
}
}
};