矩阵置零

2018-09-15  本文已影响0人  小白学编程

给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法

示例 1:

输入:
[
[1,1,1],
[1,0,1],
[1,1,1]
]
输出:
[
[1,0,1],
[0,0,0],
[1,0,1]
]
</pre>

示例 2:

输入:
[
[0,1,2,0],
[3,4,5,2],
[1,3,1,5]
]
输出:
[
[0,0,0,0],
[0,4,5,0],
[0,3,1,0]
]</pre>

进阶:

class Solution {
    public void setZeroes(int[][] matrix) {
        List<Integer> row=new ArrayList<>();
        List<Integer> col=new ArrayList<>();
       
        for(int i=0;i<matrix.length;++i){
            for(int j=0;j<matrix[0].length;++j){
                if(matrix[i][j]==0){
                    row.add(i);
                    col.add(j);
                    
                    System.out.println(i+""+j);
                }
            }
        }
       // System.out.println(row.length+" "+col.length);
        
        for(int i=0;i<row.size();++i){
            for(int j=0;j<matrix[0].length;++j){
                matrix[row.get(i)][j]=0;
                
            }
            for(int k=0;k<matrix.length;++k){
                matrix[k][col.get(i)]=0;
            }
            
        }
        
    }
}
class Solution {
    public void setZeroes(int[][] matrix) {
        int row=matrix.length;
        int col=matrix[0].length;
        boolean fr=false;
        boolean fc=false;
        
        for(int i=0;i<matrix.length;++i){
            for(int j=0;j<matrix[0].length;++j){
                
                if(matrix[i][j]==0){
                    if(i==0){
                        fr=true;
                    }
                    if(j==0){
                        fc=true;
                    }
                    matrix[0][j]=0;
                    matrix[i][0]=0;
                }
            }
        }
        
        for(int j=1;j<matrix[0].length;++j){
            if(matrix[0][j]==0){
                for(int i=0;i<matrix.length;++i){
                    matrix[i][j]=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;
                }
            }
        }
        
        if(fr){
            for(int i=0;i<matrix[0].length;++i){
                matrix[0][i]=0;
            }
        }
        
        if(fc){
            for(int j=0;j<matrix.length;++j){
                matrix[j][0]=0;
            }
        }
    }
}

上一篇 下一篇

猜你喜欢

热点阅读