难度中等
编写一种算法,若M × N矩阵中某个元素为0,则将其所在的行与列清零。
示例 1:
输入: [ [1,1,1], [1,0,1], [1,1,1] ] 输出: [ [1,0,1], [0,0,0], [1,0,1] ]
示例 2:
输入: [ [0,1,2,0], [3,4,5,2], [1,3,1,5] ] 输出: [ [0,0,0,0], [0,4,5,0], [0,3,1,0] ]
开始想着直接遍历,遇到0就将整行整列赋0,但这会影响到接下来的对0的判断,所以捏,就先将这些0的下标存起来咯,注意行下标和列下标要分开存,开两个vector;
class Solution {
public:
void setZeroes(vector<vector<int>>& matrix) {
int x=matrix.size();
int y=matrix[0].size();
vector<int>hang;
vector<int>lie;
for(int i=0;i<x;i++)
{
for(int j=0;j<y;j++)
{
if(matrix[i][j]==0)
{
hang.push_back(i);
lie.push_back(j);
}
}
}
for(int i=0;i<hang.size();i++)
{
for(int j=0;j<y;j++)
matrix[hang[i]][j]=0;
}
for(int i=0;i<lie.size();i++)
{
for(int j=0;j<x;j++)
matrix[j][lie[i]]=0;
}
}
};