二刷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;
            }
        }
    }
}
相关推荐
程序猿乐锅2 小时前
从0-1一文详解RabbitMQ
java·分布式·后端·中间件·rabbitmq·ruby
考虑考虑5 小时前
JDK26中的List.ofLazy()
java·后端·java ee
小蒜学长6 小时前
基于SpringBoot的公寓报修管理系统的设计与实现(代码+数据库+LW)
java·spring boot·后端·公寓报修管理系统·多角色协同
for_ever_love__6 小时前
MySQL 主从复制讲透:binlog 原理、搭建步骤与读写分离
java·数据库·mysql·binlog·读写分离·原理·主从复制
小π军8 小时前
操作系统面试题
java·linux·服务器
倔强的石头1068 小时前
应用账号最小权限实践:读写账号、报表账号、运维账号分层
java·运维·开发语言
Shaoshing9 小时前
ThreadLocal
java·jvm·threadlocal
写后端的胖头鱼9 小时前
一文详解CAS
java·jvm·spring·cas·乐观锁·自旋
鱼宵9 小时前
Spring AI 提示词模板:{变量} 参数化 + few-shot,一条提示词反复用
java·人工智能·spring·few-shot·提示词工程·springai