73. 矩阵置零

73. 矩阵置零

73. 矩阵置零

链接:73. 矩阵置零

题解:https://leetcode-cn.com/problems/set-matrix-zeroes/solution/xiang-jie-ge-chong-kong-jian-fu-za-du-de-y4pd/

class Solution {
public:
    void setZeroes(vector<vector<int>>& matrix) {
        if(matrix.size() == 0) {
            return;
        }
        // visited记录的是matrix[i][j]为0的位置,是否被访问过
        vector<vector<bool>> visited(matrix.size(), vector<bool>(matrix[0].size(), false));
        for(int i = 0; i < matrix.size(); ++i) {
            for(int j = 0; j < matrix[i].size(); ++j) {
                if(matrix[i][j] == 0 && !visited[i][j]) {
                    // 将i这行变为0,并且标记哪些0是本次变为0的,而不是原来matrix本身是0的
                     for(int col = 0; col < matrix[i].size(); ++col) {
                         if(matrix[i][col] != 0) {
                             matrix[i][col] = 0;
                             visited[i][col] = true;
                         }
                    }
                    // 将j这列变为0,并且标记哪些0是本次变为0的,而不是原来matrix本身是0的
                    for(int row = 0; row < matrix.size(); ++row) {
                        if(matrix[row][j] != 0) {
                             matrix[row][j] = 0;
                             visited[row][j] = true;
                         }
                    }
                }
            }
        }
    }
};

 

上一篇:无法启动MySQL服务,错误1053:服务没有及时响应启动或控制请求


下一篇:Windowed reading and writing