73. Set Matrix Zeroes

Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place.

click to show follow up.

Subscribe to see which companies asked this question

这题目关键是要求O(1)的空间。
可以使用第1行,第1列来保存数据信息。

class Solution {
public:
   void setZeroes(vector<vector<int> > &matrix) {

        bool firstrow = false;
        bool firstcol = false;
        for(int j = 0; j < col; ++j)
            if(matrix[0][j] == 0){
                firstrow = true;
                break;
            }
        for(int i = 0; i < row; ++i)
            if(matrix[i][0] == 0){
                firstcol = true;
                break;
            }

        for(int i = 1; i < row; ++i)
            for(int j = 1; j < col; ++j){
                if(matrix[i][j] == 0) {
                    matrix[i][0] = 0;
                    matrix[0][j] = 0;
                }
            }

        for(int i = 1; i < row; ++i)
            for(int j = 1; j < col; ++j)
                if(matrix[i][0] == 0 || matrix[0][j] == 0)
                    matrix[i][j] = 0;

        if(firstrow){
            for(int j = 0; j < col; ++j)
                matrix[0][j] = 0;
        }
        if(firstcol){
            for(int i = 0; i < row; ++i)
                matrix[i][0] = 0;
        }
    }
};

你可能感兴趣的:(73. Set Matrix Zeroes)