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

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

相关推荐
青山木26 分钟前
Hot 100 ---腐烂的橘子
java·数据结构·后端·算法·leetcode·广度优先
未来之窗软件服务30 分钟前
计算机考试-快速排序—东方仙盟
数据结构·算法·排序算法·仙盟创梦ide·东方仙盟
小龙报43 分钟前
【优选算法】1. 水果成蓝 2.找到字符串中所有字母的异位词
java·c语言·数据结构·数据库·c++·redis·算法
txzrxz2 小时前
数论:排列数、组合数、费马小定理、逆元、同余定理
c++·算法·数论·组合数·费马小定理·逆元·排列数
xqqxqxxq2 小时前
LeetCode Hot100 双指针专项题解笔记
笔记·算法·leetcode
闪电悠米2 小时前
力扣hot100-54.螺旋矩阵-模拟边界控制详解
算法·leetcode·矩阵
变量未定义~2 小时前
虚拟节点-星石传送阵(4星)、强连通分量
数据结构·算法
IT方大同2 小时前
C语言分支与循环语句
c语言·开发语言·算法
待磨的钝刨3 小时前
深入理解主成分分析(PCA)
人工智能·线性代数·算法·机器学习
wWYy.4 小时前
算法:合并两个有序数组
数据结构·算法