C++零基础算法100题 - 矩阵置零

137 阅读1分钟

题目链接: 73. 矩阵置零 - 力扣(LeetCode)

题目描述

image.png

解题思路

  • 首先双重for循环遍历整个数组
  • 我们遍历这个数组之后要标记其中为0的元素
  • 将这个元素标记好之后,行下标和列下标保存到两个数组当中去。
  • 重新双重for循环遍历数组
  • 遇到标记好的元素下标,我们将matrix[i][j]设置为0

代码实现

class Solution {
public:
    void setZeroes(vector<vector<int>>& matrix) {
        int m=matrix.size();
        int n=matrix[0].size();
        vector<bool> row(m),col(n);
        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                if(!matrix[i][j]){
                    row[i]=true;
                    col[j]=true;
                }
            }
        }
        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                if(row[i]||col[j]){
                    matrix[i][j]=0;
                }
            }
        }
    }
};