二刷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;
            }
        }
    }
}
相关推荐
步行cgn28 分钟前
@ResponseBody 详解:Spring MVC 中把返回值直接写入响应体
java·spring·mvc
jason成都1 小时前
RTKLIB 的 Java 移植版来了:rtklib-java v3.3.0 功能全景
java·gnss·rtklib·rtklib_java
LazyHunter91 小时前
JDK 28:Java 下一步方向解析与新特性展望
java·jdk
m0_639906942 小时前
Java 重写 Override 与重载 Overload 区别、访问修饰符、static 关键字
java·开发语言
GIS数据转换器2 小时前
基于CIM的城市智慧供热监管服务平台
java·大数据·开发语言·人工智能·后端·物联网·struts
m0_639906942 小时前
SpringBoot自动配置原理
java·spring boot·后端
海鸥-w3 小时前
数据库冗余字段设计笔记
java·数据库·笔记·oracle
工具派3 小时前
PDF签名贴上去为什么发虚?尺寸、DPI与坐标的边界实测
java·python·pdf
萧瑟余晖3 小时前
Spring Data综合实战与调优详解
java·后端·spring