难度:中等

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

    示例:**

    1. 输入:
    2. [
    3. [1,1,1],
    4. [1,0,1],
    5. [1,1,1]
    6. ]
    7. 输出:
    8. [
    9. [1,0,1],
    10. [0,0,0],
    11. [1,0,1]
    12. ]

    解题思路:

    1. var setZeroes = function(matrix) {
    2. var rows={}
    3. var column={}
    4. for(var i=0;i<matrix.length;i++)
    5. for(var j=0;j<matrix[0].length;j++){
    6. if(matrix[i][j]==0){
    7. rows[i]=false
    8. column[j]=false
    9. }
    10. }
    11. for(var i=0;i<matrix.length;i++)
    12. for(var j=0;j<matrix[0].length;j++){
    13. if((rows[i]==false)||(column[j]==false))
    14. matrix[i][j]=0
    15. }
    16. };

    常数空间复杂度

    var setZeroes = function(matrix) {
        let rowLen = matrix.length
        let colLen = matrix[0].length;
        for(let i = 0;i<rowLen;i++){
            for(let j = 0;j<colLen;j++){
                if(matrix[i][j] == 0){
                   for(let rowI = 0;rowI<rowLen;rowI++){
                        if(matrix[rowI][j] != 0){
                           matrix[rowI][j] = true;
                        }
                    }
                    for(let colI = 0;colI<colLen;colI++){
                        if(matrix[i][colI] != 0){
                           matrix[i][colI] = true;
                        }
                    }
                }
            }
        }
        for(let i = 0;i<rowLen;i++){
            for(let j = 0;j<colLen;j++){
                if( typeof(matrix[i][j]) == 'boolean'){
                    matrix[i][j] = 0;
                }
            }
        }
        return matrix;
    };
    

    巧设-0

    var setZeroes = function(matrix) {
        let rowLen = matrix.length
        let colLen = matrix[0].length;
        for(let i = 0;i<rowLen;i++){
            for(let j = 0;j<colLen;j++){
                if(matrix[i][j] == 0&&1/matrix[i][j]>0){
                   for(let rowI = 0;rowI<rowLen;rowI++){
                        if(matrix[rowI][j] != 0){
                           matrix[rowI][j] = -0;
                        }
                    }
                    for(let colI = 0;colI<colLen;colI++){
                        if(matrix[i][colI] != 0){
                           matrix[i][colI] = -0;
                        }
                    }
                }
            }
        }
        return matrix;
    };