二刷hot100-73.矩阵置零

把第一行和第一列当作标记;

循环内部元素,如果为0,则在对应的第一行和第一列进行标记;

二次循环内部元素,这次要反过来看,如果元素对应的第一行或者第一列为0,说明要置当前元素为0;

但在两次循环之前,要对第一行和第一列也进行标记,如果有0,则标记为true,在最后将第一行或者第一列都覆盖为0

java 复制代码
class Solution {
    public void setZeroes(int[][] matrix) {
        int m = matrix.length;
        int n = matrix[0].length;
        boolean f1 = false;
        boolean f2 = false;
        for(int i = 0;i < n;i++){
            if(matrix[0][i] == 0){
                f1 = true;
            }
        }
        for(int i = 0;i < m;i++){
            if(matrix[i][0] == 0){
                f2 = true;
            }
        }
        for(int i = 1;i < m;i++){
            for(int j = 1;j < n;j++){
                if(matrix[i][j] == 0){
                    matrix[i][0] = matrix[0][j] = 0;
                }
            }
        }
        for(int i = 1;i < m;i++){
            for(int j = 1;j < n;j++){
                if(matrix[i][0] == 0 || matrix[0][j] == 0){
                    matrix[i][j] = 0;
                }
            }
        }
        if(f1){
            for(int i = 0;i < n;i++){
                matrix[0][i] = 0;
            }
        }
        if(f2){
            for(int i = 0;i < m;i++){
                matrix[i][0] = 0;
            }
        }
    }
}
相关推荐
caoerzhong1 小时前
JeeWMS 开源仓库管理系统二次开发与接口对接实战:Java WMS 如何与 ERP、MES 和自动化设备打通
java·开源
长谷深风1111 小时前
评测AI Agent:三种裁判各司其职
java·大数据·开发语言·人工智能·ai agent
边境悍匪1 小时前
蜗牛学苑 Java 智能体学习 Day42|项目周开发技术汇总 1 思维导图复盘
java·开发语言·spring boot·学习·spring
槑有烦恼2 小时前
Java 字符串 & List集合 高频易错真题复盘(含全部错题+修正)
java
语戚2 小时前
力扣 1621. 大小为K的不重叠线段的数目:动态规划(Java 实现)
java·算法·leetcode·动态规划·力扣·dp
君顾12 小时前
本地托管机构管理源码实战:需求拆解、数据建模与多端部署
java·开发语言·托管
青山木2 小时前
Hot 100 --- 最长有效括号
java·数据结构·算法·leetcode·动态规划
xcl09252 小时前
本地电竞服务交易系统架构设计与实战:从同城匹配到订单履约
java·spring boot
曹牧2 小时前
SVN 上查找文件
java