hot 100 73. 矩阵置零

矩阵置零


问题描述

给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。


样例输入

cpp 复制代码
matrix = [[1,1,1],[1,0,1],[1,1,1]]

样例输出

cpp 复制代码
[[1,0,1],[0,0,0],[1,0,1]]

评测用例规模与约定

m == matrix.length

n == matrix[0].length

1 <= m, n <= 200

-2^31 <= matrix[i][j] <= 2^31 - 1


解析

不能使用额外空间只能在原数组上操作,我们可以把数组第一行第一列当作标记,看行列是否有0,遍历一遍标记。但第一行第一列怎么处理,可以先用boolen记录一下其他都修改完再处理,同时第一列是否有0用m[0][0]就能表示。


参考程序

java 复制代码
class Solution {
    public void setZeroes(int[][] matrix) {
        int m=matrix.length;
        int n=matrix[0].length;
        boolean first=false;
        for(int j=0;j<n;j++){
            if(matrix[0][j]==0){first=true;break;}
        }
        for(int i=1;i<m;i++){
            for(int j=0;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(matrix[0][0]==0){
            for(int[] row:matrix){
                row[0]=0;
            }
        }
        if(first){
            Arrays.fill(matrix[0],0);
        }
    }
}

难度等级

⭐️⭐️⭐️⭐️(1~10星)

以个人刷题整理为目的,如若侵权,请联系删除~

相关推荐
goodluckyaa2 小时前
thread block grid模型
算法
武帝为此2 小时前
【Rabbit加密算法介绍】
算法·安全
TK云大师-KK2 小时前
2026年4月TikTok矩阵运营系统横向评测TOP5
大数据·网络·人工智能·矩阵·自动化·新媒体运营
m0_716765232 小时前
数据结构三要素、时间复杂度计算详解
开发语言·数据结构·c++·经验分享·笔记·算法·visual studio
米粒12 小时前
力扣算法刷题 Day 36
算法·leetcode·职场和发展
And_Ii2 小时前
3740. 三个相等元素之间的最小距离 I
c++·算法
csuzhucong2 小时前
puzzle(0334)双面数局
数据结构·算法
强盛机器学习~2 小时前
2026年SCI一区新算法-贝塞尔曲线优化算法(BCO)-公式原理详解与性能测评 Matlab代码免费获取
算法·matlab·进化计算·智能优化算法·元启发式算法·群体智能算法
翟天保Steven2 小时前
空间载波移相干涉算法(SPSI)
算法·激光干涉·精密量测