力扣刷题8---零矩阵
程序员文章站
2022-04-15 23:39:33
题目编写一种算法,若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]]解析个人的想法是遍历矩阵中的每一个元素...
题目
编写一种算法,若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的数量会增加。
代码
class Solution {
public:
void setZeroes(vector<vector<int>>& matrix) {
int r = matrix.size();
int c = matrix[0].size();
vector<vector<int>> Newmatrix = matrix;
//不能基于原矩阵进行修改,不然的话会修改错误,因为这样的话0的数量会增加
for(int i = 0; i < r; i++)
for(int j = 0; j < c; j++)
{
if(matrix[i][j] == 0)
{
for(int m = 0; m < r; ++m)
{
Newmatrix[m][j] =0;
}
for(int n=0; n < c; ++n)
{
Newmatrix[i][n] = 0;
}
}
}
matrix = Newmatrix;
}
};
本文地址:https://blog.csdn.net/weixin_44378800/article/details/107349152