面试题 01.08. 零矩阵

面试题 01.08. 零矩阵

编写一种算法,若M × N矩阵中某个元素为0,则将其所在的行与列清零。

示例 1:
输入:
[
  [1,1,1],
  [1,0,1],
  [1,1,1]
]
输出:
[
  [1,0,1],
  [0,0,0],
  [1,0,1]
]
示例 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]
]

作者:力扣 (LeetCode)
链接:https://leetcode-cn.com/leetbook/read/array-and-string/ciekh/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

class Solution {
    public void setZeroes(int[][] matrix) {
        if(matrix == null || matrix.length == 0 || matrix[0].length == 0) return;

        int m = matrix.length,n = matrix[0].length;    //行列的长度
        int[] rows = new int[m];   
        int[] colums = new int[n];    //这两行代码是记录  要是有0的话 这一列和这一行记录为1
        for(int i=0; i<m; i++){
            for(int j=0; j<n; j++){
                if(matrix[i][j] == 0){
                    rows[i] = 1;    //此行记录有0
                    colums[j] = 1;   //此列记录有0
                }
            }
        }
        for(int i=0; i<m; i++){
            for(int j=0; j<n; j++){
                if(rows[i]==1 || colums[j]==1) matrix[i][j] = 0;   //此行和此列设置为0
            }
        }
    }
}

posted @ 2021-02-12 10:02  xiaoff  阅读(82)  评论(0编辑  收藏  举报