1.7 Write an algorithm such that if an element in an M*N matrix is 0, its entire row and column are set to 0.
void setZeros(vector<vector<int> >& matrix) {
int m = matrix.size();
int n = matrix[0].size();
vector<bool> row(m, false);
vector<bool> column(n, false);
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (matrix[i][j] == 0) {
row[i] = true;
column[j] = true;
}
}
}
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (row[i] || column[j]) {
matrix[i][j] = 0;
}
}
}
}
本文介绍了一种高效的算法,用于处理矩阵中元素为零的情况。当检测到矩阵中的某个元素为零时,该算法会将其所在行和列的所有元素设置为零。通过使用布尔数组记录哪些行和列需要被置零,避免了重复扫描,从而提高了效率。
478

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



