Leetcode 细节实现 Set Matrix Zeroes

时间:2023-11-11 17:03:26

Set Matrix Zeroes

Total Accepted: 18139 Total
Submissions: 58671My Submissions

Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place.

click to show follow up.

题意:给定矩阵,假设矩阵的某个位置为0。则把那一行那一列的全部元素都置为0

思路:用两个bool数组,分别记录应该把全部元素置为0的行和列

复杂度:时间O(m*n)。空间O(m+n)

void setZeroes(vector<vector<int> > &matrix){
if(matrix.empty()) return ;
int rows = matrix.size(), columns = matrix[0].size();
vector<bool> row(rows, false);
vector<bool> column(columns, false);
for(int i = 0; i < rows; ++i){
for(int j = 0; j < columns; ++j){
if(matrix[i][j] == 0){
row[i] = column[j] = true;
continue;
}
}
}
for(int i = 0; i < rows; ++i){
if(!row[i]) continue;
for(int j = 0; j < columns; ++j){
matrix[i][j] = 0;
}
}
for(int j = 0; j < columns; ++j){
if(!column[j]) continue;
for(int i = 0; i < rows; ++i){
matrix[i][j] = 0;
}
}
}