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.

Solution: can be much much simpler

public class Solution {
    public void setZeroes(int[][] matrix) {
        boolean left=false, right=false, up=false, down=false;
        for(int i=0; i<matrix.length; i++){
            if(matrix[i][0]==0) left=true;
            if(matrix[i][matrix[0].length-1]==0) right=true;
        }
        for(int i=0; i<matrix[0].length; i++){
            if(matrix[0][i]==0) up=true;
            if(matrix[matrix.length-1][i]==0) down=true;
        }
        for(int i=0; i<matrix.length; i++){
            for(int j=0; j<matrix[0].length; j++){
                if(matrix[i][j]==0) matrix[0][j]=matrix[i][0]=0;
            }
        }
        for(int i=1; i<matrix.length; i++){
            if(matrix[i][0]==0){
                for(int j=0; j<matrix[0].length; j++) matrix[i][j]=0;
            }
        }
        for(int j=1; j<matrix[0].length-1; j++){
            if(matrix[0][j]==0){
                for(int i=1; i<matrix.length; i++) matrix[i][j]=0;
            }
        }
        if(up) for(int j=0; j<matrix[0].length; j++) matrix[0][j]=0;
        if(down) for(int j=0; j<matrix[0].length; j++) matrix[matrix.length-1][j]=0;
        if(left) for(int i=0; i<matrix.length; i++) matrix[i][0]=0;
        if(right) for(int i=0; i<matrix.length; i++) matrix[i][matrix[0].length-1]=0;
            
    }
}
comments powered by Disqus