题意:给出一个01矩阵,如果i行j列的格子是0,那么把i行和j列的所有格子全变成0.要求不使用额外空间。
题解:我们可以先找到第一个是0的格子,那么我们再把其他为0的格子信息存到i行j列里面,代码会有点长。
class Solution {
public:
void setZeroes(vector<vector<int>>& matrix) {
int row = -1,col = -1;
int n = matrix.size();
int m = matrix[0].size();
for(int i = 0; i < n; i++)
{
for(int j = 0; j < m; j++)
{
if(matrix[i][j] == 0)
{
row = i;
col = j;
break;
}
}
if(row != -1) break;
}
if(row == -1) return ;
for(int i = 0; i < n; i++)
{
for(int j = 0; j < m; j++)
{
if(matrix[i][j] == 0)
{
matrix[row][j] = 0;
matrix[i][col] = 0;
}
}
}
for(int i = 0; i < n; i++)
{
if(i != row && matrix[i][col] == 0)
for(int j = 0; j < m; j++) matrix[i][j] = 0;
}
for(int i = 0; i < m; i++)
{
if(i != col && matrix[row][i] == 0)
for(int j = 0; j < n; j++) matrix[j][i] = 0;
}
for(int i = 0; i < n; i++) matrix[i][col] = 0;
for(int i = 0; i < m; i++) matrix[row][i] = 0;
}
};