[73. 矩阵置零]

89 阅读1分钟

73. 矩阵置零

给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法

image.png

set 无序集合

s.insert()

for(int x:s)  遍历元素集合
先用set存储i j 的下标
再遍历set的元素将matrix元素置为0

class Solution {
public:
    void setZeroes(vector<vector<int>>& matrix) {
        int m = matrix.size();
        int n = matrix[0].size();

        set<int> s1;
        set<int> s2;

        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                if(matrix[i][j]==0){
                    s1.insert(i);
                    s2.insert(j);
                }
            }
        }
        //某行有0 该行所有列变0
        for(int x:s1){
            for(int i=0;i<n;i++){
                matrix[x][i]=0;
            }
        }

        //某列有0 该列所有行变0
        for(int x:s2){
            for(int i=0;i<m;i++){
                matrix[i][x]=0;
            }
        }

    }
};