• 力扣第73题


    一、题目:73. 矩阵置零
    73
    二、题目解析:

    解题步骤:注意题目要求原地算法–>利用矩阵的第一行和第一列记录矩阵需要置0的行和列,只要把0所在行和列的第一个位置置为0,然后再根据第一行和第一列0的位置,对矩阵置0即可

    1. 定义两个boolean变量,遍历矩阵中第一行和第一列是否存在0,存在则置为true
    2. 从二维数组中的第一行和第一列开始遍历是否存在0,存在则将当前元素所在行的第一个元素和所在列的第一个元素置为 0
    3. 从二维数组中的第一行和第一列开始遍历,只要当前元素对应的第一行或第一列有一个元素为0,则将当前元素更新为 0
    4. 最后根据两个boolean变量,判断是否需要将第一行和第一列置为0,需要则将该行或列置0即可

    图示:

    73

    三、代码如下:

    public int[][] setZero(int[][] matrix){
            int m = matrix.length;
            int n = matrix[0].length;
            boolean rowZero = false;
            boolean colZero = false;
            for(int i = 0;i < m; i++){
                //判断第一列是否存在0
                if(matrix[i][0] == 0){
                    colZero = true;
                }
            }
            for (int j = 0 ;j < n; j++){
                //判断第一行是否存在0
                if(matrix[0][j] == 0){
                    rowZero = true;
                }
            }
            for(int i = 1;i<m;i++){
                for(int j = 1; j<n;j++){
                    if(matrix[i][j] == 0){
                        //如果当前元素等于 0,则将当前元素所在行的第一个元素和所在列的第一个元素置为 0
                        matrix[i][0] = matrix[0][j] = 0;
                    }
                }
            }
            for(int i = 1;i<m;i++){
                for(int j = 1; j<n;j++){
                    //只要当前元素对应的第一行或第一列有一个元素为0,则将当前元素更新为 0
                    if(matrix[i][0] == 0 || matrix[0][j] ==0){
                        matrix[i][j] = 0;
                    }
                }
            }
            if(rowZero){
                for (int i = 0; i < n; i++) {
                    matrix[0][i] = 0;
                }
            }
            if(colZero){
                for (int i = 0;i < m;i++){
                    matrix[i][0] = 0;
                }
            }
            return matrix;
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45

    四、测试
    73

    五、结束

  • 相关阅读:
    厚积薄发--一文带您了解阿里云 RocketMQ 轻量版消息队列(MNS)
    tensorflow 里面的占位符 placeholder
    6.S081 附加Lab3 线程切换——源代码实现(trap,yeild,context,Scheduler)
    皮亚杰将儿童的道德发展分为四个阶段
    2022.9.8-----leetcode.667
    【POJ No. 3253】 围栏修复 Fence Repair
    面试问到MySQL模块划分与架构体系怎么办
    防火墙Ipsec vpn的配置
    Opencv中的RNG-随机绘图
    爬虫 — Bs4 数据解析
  • 原文地址:https://blog.csdn.net/qq_39939541/article/details/128089087