零矩阵
问题描述
编写一种算法,若M × N矩阵中某个元素为0,则将其所在的行与列清零。
解题思路
创建一个二维动态数组,遍历原数组中的所有元素,然后将零元素的行列数记录下来,然后再根据记录的行列数分别归零
代码
class Solution {
public:
void setZeroes(vector<vector<int>>& matrix) {
int row = matrix.size();
if (row == 0) return;
vector<vector<int>> index;
int col = matrix[0].size();
for (int i = 0; i < row; i++)
{
for (int j = 0; j < col; j++) {
if (matrix[i][j] == 0) index.push_back({ i,j });
}
}
//cout << row << " " << col;
if (index.size() == 0) return;
for (int i = 0; i < index.size(); i++)
{
int r = index[i][0];
int c = index[i][1];
for (int m = 0; m < col; m++)
{
matrix[r][m] = 0;
}
for (int n = 0; n < row; n++)
{
matrix[n][c] = 0;
}
}
}
};