Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place.
先将矩阵扫描一遍,用一个队列来记录矩阵中元素为0的位置,然后再通过不断出队把矩阵中对应的行和列的元素改为0,直到队列为空。时间复杂度为O(mn)。
class Solution {
public:
void setZeroes(vector<vector<int>>& matrix) {
queue<int> q;
int m=matrix.size();
int n=matrix[0].size();
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
if(matrix[i][j]==0)
{
q.push(i);
q.push(j);
}
}
}
int r,c;
while(!q.empty())
{
r=q.front();
q.pop();
c=q.front();
q.pop();
for(int i=0;i<n;i++)
{
matrix[r][i]=0;
}
for(int i=0;i<m;i++)
{
matrix[i][c]=0;
}
}
}
};