class Solution {
public:
void setZeroes(vector<vector<int> > &matrix) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
//先利用第一行和第一列来记录有0的行和列,然后给除了第一行和第一列之外的元素赋值
//接着根据第一行和第一列是否有零(算法开始时应判断)给第一行和第一列赋值
if (matrix.size() == 0 || matrix[0].size() == 0)
{
return;
}
bool isZeroRow = false;
bool isZeroCol = false;
vector<int>::size_type row;
vector<int>::size_type col;
for (col = 0; col < matrix[0].size(); ++col)
{
if (matrix[0][col] == 0)
{
isZeroRow = true;
break;
}
}
for (row = 0; row < matrix.size(); ++row)
{
if (matrix[row][0] == 0)
{
isZeroCol = true;
break;
}
}
for (row = 1; row < matrix.size(); ++row)
{
for (col = 1; col < matrix[row].size(); ++col)
{
if (matrix[row][col] == 0)
{
matrix[row][0] = 0;
matrix[0][col] = 0;
}
}
}
for (row = 1; row < matrix.size(); ++row)
{
for (col = 1; col < matrix[0].size(); ++col)
{
if (matrix[row][0] == 0 || matrix[0][col] == 0)
{
matrix[row][col] = 0;
}
}
}
if (isZeroRow)
{
for (col = 0; col < matrix[0].size(); ++col)
{
matrix[0][col] = 0;
}
}
if (isZeroCol)
{
for (row = 0; row < matrix.size(); ++row)
{
matrix[row][0] = 0;
}
}
}
};
LeetCode-Set Matrix Zeroes
最新推荐文章于 2023-02-25 23:03:36 发布