LeetCode Set Matrix Zeros

Description

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

The original problem is here.

The original code is here.

My Solution

I solve this problem in C++, as below:

/*
*Set Matrix Zeroes 
*Author: shuaijiang
*Email: zhaoshuaijiang8@gmail.com
*/
#include<iostream>
#include<stdlib.h>
using namespace std;

class Solution {
public:
    void setZeroes(vector<vector<int>>& matrix) {
        int rowSize = matrix.size();
        if(rowSize<=0)
            return;
        bool firstRow=false, firstCol=false;
        vector<int> oneRow = matrix[0];
        int colSize = oneRow.size();
        
        for(int i=0;i<colSize;i++){
            if(matrix[0][i]==0)
                firstRow = true;
        }

        for(int i=0;i<rowSize;i++){
            if(matrix[i][0]==0)
                firstCol = true;
        }
        
        for(int i=1;i<rowSize;i++){
            for(int j=1;j<colSize;j++){
                if(matrix[i][j]==0){
                    matrix[i][0]=0;
                    matrix[0][j]=0;
                }
            }
        }
        //Set rows to zeros
        for(int i=1;i<rowSize;i++){
            if(matrix[i][0]==0){
                for(int j=1;j<colSize;j++)
                    matrix[i][j] = 0;
            }
        }
        //Set columns to zeros
        for(int i=1;i<colSize;i++){
            if(matrix[0][i]==0){
                for(int j=1;j<rowSize;j++)
                    matrix[j][i] = 0;
            }
        }
        //Set first row to zeros
        if(firstRow){
            for(int i=0;i<colSize;i++)
                matrix[0][i]=0;
        }
        //Set first column to zeros
        if(firstCol){
            for(int i=0;i<rowSize;i++)
                matrix[i][0] = 0;
        }
    }
};

Note

To save time, during traversal the matrix, if the element(i,j) is zero, set the (i,0) and (0,j) to zero. After traversal the matrix, we just check whether (i,0) and (0,j) are zero or not. If so, set the row or column to zeros.


LeetCode Set Matrix Zeros
http://zhaoshuaijiang.com/2015/07/12/leetcode_set_matrix_zeros/
作者
shuaijiang
发布于
2015年7月12日
许可协议