【Leetcode】面试题 01.08. 零矩阵
题目
编写一种算法,若M × N矩阵中某个元素为0,则将其所在的行与列清零。
思路
- 设置一个标记数组,对于每一个矩阵的元素为0,标记下这是第几行或者第几列的元素
- 然后循环原数组,根据标记数组,将相关元素设置为0
代码
class Solution {
public:
void setZeroes(vector<vector<int>>& matrix) {
int m = matrix.size();//行
int n = matrix[0].size();//列
// 新建一个标记数组
vector<int> a(m);
vector<int> b(n);
for(int i = 0; i < m; i++)
{
for(int j = 0; j < n; j++)
{
if(matrix[i][j] == 0)
{
a[i] = 1;//标记这一行
b[j] = 1;//标记这一列
}
}
}
for(int i = 0; i < m; i++)
{
for(int j = 0; j < n; j++)
{
if(a[i] == 1 || b[j] == 1)
{
matrix[i][j] = 0;
}
}
}
}
};