链接:矩阵置零
描述:给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。
输入:matrix = [[1,1,1],[1,0,1],[1,1,1]]
输出:[[1,0,1],[0,0,0],[1,0,1]]
思路:因为需要原地修改,那么如果判断的元素条件是原矩阵的话,就会出现很多因为被修改而后来成为的0元素来扰乱视听,所以我们初始化一个矩阵与原矩阵相同用来进行判断。
代码:
class Solution {
public:
void setZeroes(vector<vector<int>>& matrix) {
int m = matrix.size(), n = matrix[0].size(), k;
vector<vector<int>> mat = matrix; //初始化一个矩阵与原矩阵matrix相同,用来进行判断
for(int i = 0; i < m ; i++)
{
for(int j = 0; j < n ; j++)
{
if(mat[i][j] == 0)
{
for(k = 0; k < n ; k++) //改变该行元素
{
matrix[i][k] = 0;
}
for(k = 0; k < m ; k++) //改变该列元素
{
matrix[k][j] = 0;
}
}
}
}
}
};