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 == matrix0.length

1 <= m, n <= 200

-2^31 <= matrixij <= 2^31 - 1


解析

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


参考程序

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星)

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

相关推荐
其实防守也摸鱼8 小时前
个人学习 Pwn 思路:从基础到漏洞利用的进阶路径
大数据·前端·人工智能·chrome·算法·安全·网络安全
Nuanyt9 小时前
LeetCode Hot 100 链表专题(五)· 2 题(Java)
java·算法·leetcode·链表
w_zero_one12 小时前
递归算法(一)
java·开发语言·算法
风影同志7832413 小时前
20 个比特能装下多少行情?——实测拆解 Kronos 的 K 线分词器
算法
写的都是BUG14 小时前
APK 里的钥匙,一直就放在门口:聊聊加固真正该做什么
前端·算法
地平线开发者14 小时前
CLIP 的零样本分类:一组文本如何变成图像分类器?
算法
京东云开发者15 小时前
从“会生成”到“能生产”:萤火虫 AIGC 平台的 AI Infra 实践
算法·aigc·产品
youshi666815 小时前
PID——算法改进
算法
一只不想敲代码的程序猿17 小时前
如何更高效地拆解问题?
算法