题目

解题思路

  1. 通过二层循环找出元素为0所在的行和列;
  2. 设置标志位记录当前行是否存在元素为0的,设置列表存储列为0的列;
  3. 在内循环结束后对存在元素为0的行,填充为0;
  4. 遍历列表,将列置为0;

代码展示

class Solution {
    public void setZeroes(int[][] matrix) {
        Set<Integer> row = new HashSet<>();
        for (int i = 0; i < matrix.length; i++){
            boolean status = false;
            for (int j = 0; j < matrix[i].length; j++){
                if(matrix[i][j] == 0){
                    status = true;
                    row.add(j);
                }
            }
            if(status){
                Arrays.fill(matrix[i], 0);
            }
        }
        for (int num : row){
            for (int i = 0; i < matrix.length; i++){
                matrix[i][num] = 0;
            }
        }
    }
}
10-31 21:09