代码
class Solution {
public:
void setZeroes(vector<vector<int> > &matrix) {
int row = matrix.size();
int col = matrix[0].size();
set<int> rowZero;
set<int> colZero;
for(int i = 0; i < row; ++i)
for(int j = 0; j < col; ++j)
{
if(matrix[i][j]==0)
{
rowZero.insert(i);
colZero.insert(j);
}
}
for(set<int>::iterator i = rowZero.begin(); i != rowZero.end(); ++i)
for(int j = 0; j < col; ++j)
matrix[*i][j] = 0;
for(set<int>::iterator i = colZero.begin(); i != colZero.end(); ++i)
for(int j = 0; j < row; ++j)
matrix[j][*i]= 0;
}
};
本文介绍了一种高效的算法,用于在矩阵中将包含0元素的行和列全部置为0。通过使用集合记录需要置零的位置,并进行二次遍历实现目标。此方法避免了额外的空间开销,仅使用常数级别的额外空间。
413

被折叠的 条评论
为什么被折叠?



