Set Matrix Zeroes

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

        // check first row contain 0?
        for (int j = 0; j < n; j++) {
            if (matrix[0][j] == 0) {
                firstRow = true;
                //break;
            }
        }
        // check first col contain 0 or not
        for (int i = 0; i < m; i++) {
            if (matrix[i][0] == 0) {
                firstCol = true;
            }
        }

        // check from matrix[1][1]; do not overwrite first col and first row
        for (int i = 1; i < m; ++i) {
            for (int j = 1; j < n; ++j) {
                if (matrix[i][j] == 0) {
                    matrix[i][0] = 0;
                    matrix[0][j] = 0;
                }
            }
        }

        // set matrix zero based on first col and first row
        for (int i = 1; i < m; ++i) {
            for (int j = 1; j < n; ++j) {
                if (matrix[i][0] ==0 || matrix[0][j] ==0) {
                    matrix[i][j] = 0;
                }
            }
        }

        if (firstRow) {
            for (int j = 0; j < n; j++) {
                matrix[0][j] = 0;
            }
        }
        if (firstCol) {
            for (int i = 0; i < m; i++) {
                matrix[i][0] = 0;
            }
        }

    }
};

Bug Case

Input:  [ [1,0,3] ]
Output: [ [0,0,3] ]
Except: [ [0,0,0] ]
class Solution {
public:
    void setZeroes(vector<vector<int>>& matrix) {
        size_t m = matrix.size();
        size_t n = matrix[0].size();
        bool firstRow = false;
        bool firstCol = false;

        // check first row contain 0?
        for (int j = 0; j < n; j++) {
            if (matrix[0][j] == 0) {
                firstRow = true;
                //break;
            }
        }
        // check first col contain 0 or not
        for (int i = 0; i < m; i++) {
            if (matrix[i][0] == 0) {
                firstCol = true;
            }
        }

        // check from matrix[1][1]; do not overwrite first col and first row
        for (int i = 1; i < m; ++i) {
            for (int j = 1; j < n; ++j) {
                if (matrix[i][j] == 0) {
                    matrix[i][0] = 0;
                    matrix[0][j] = 0;
                }
            }
        }

        // set matrix zero based on first col and first row
        // better
        for (int i = 1; i < m; ++i) {
            for (int j = 1; j < n; ++j) {
                if (matrix[i][0] ==0 || matrix[0][j] ==0) {
                    matrix[i][j] = 0;
                }
            }
        }

        //for (int j = 1; j < n; j++) {
        //    if (matrix[0][j] == 0) {
        //        for (int i = 0; i < m; i++) {
        //            matrix[i][j] = 0;
        //        }
        //    }
        //}
        //for (int i = 1; i < m; i++) {
        //    if (matrix[i][0] == 0) {
        //        for (int j = 0; j < n; j++) {
        //            matrix[i][j] = 0;
        //        }
        //    }
        //}

        // Set Row and Col wrong
        if (firstRow) {
            for (int i = 0; i < m; i++) {
                matrix[i][0] = 0;
            }
        }
        if (firstCol) {
            for (int j = 0; j < n; j++) {
                matrix[0][j] = 0;
            }
        }

    }
};

results matching ""

    No results matching ""