LeetCode热题100--73.矩阵置零--中等

1. 题目

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

示例 1:

输入:matrix = [[1,1,1],[1,0,1],[1,1,1]]

输出:[[1,0,1],[0,0,0],[1,0,1]]

示例 2:

输入:matrix = [[0,1,2,0],[3,4,5,2],[1,3,1,5]]

输出:[[0,0,0,0],[0,4,5,0],[0,3,1,0]]

2. 题解

java 复制代码
class Solution {
    public void setZeroes(int[][] matrix) {
        int n = matrix.length;
        int m = matrix[0].length;
        boolean[] zeroInRow = new boolean[n];
        boolean[] zeroInLine = new boolean[m];
        for(int i = 0; i < n; i++)
            for(int j = 0; j < m; j++)
                if(matrix[i][j] == 0){
                    zeroInRow[i] = true;
                    zeroInLine[j] = true;
                }
        for(int i = 0; i < n; i++)
            for(int j = 0; j < m; j++)
                if(zeroInRow[i] || zeroInLine[j]){
                    matrix[i][j] = 0;
                }
    }
}

3. 解析

官方题解:矩阵置零

  1. class Solution {public void setZeroes(int[][] matrix)
    这定义了一个名为"Solution"的新类,并声明了setZeroes()方法来处理这个任务。
  2. int n = matrix.length;
    int m = matrix[0].length;
    boolean[] zeroInRow = new boolean[n];
    boolean[] zeroInLine = new boolean[m];
    这初始化了一些变量,用于存储行和列的信息。zeroInRow是一个布尔数组,如果对应行的元素为零,则它在该索引位置上将被设置为true。同样地,zeroInLine是一个布尔数组,表示相应列是否包含零。
  3. for(int i = 0; i < n; i++)
    for(int j = 0; j < m; j++)
    if(matrix[i][j] == 0){
    zeroInRow[i] = true;
    zeroInLine[j] = true;
    }
    这两个嵌套循环遍历整个矩阵。如果找到一个零元素,则将相应的zeroInRow[i]和zeroInLine[j]设置为true。
  4. for(int i = 0; i < n; i++)
    for(int j = 0; j < m; j++)
    if(zeroInRow[i] || zeroInLine[j]){
    matrix[i][j] = 0;
    }
    这两个嵌套循环遍历整个矩阵。如果对应的zeroInRow[i]或zeroInLine[j]为true,则将该位置上的元素设置为零。
相关推荐
龙腾AI白云3 小时前
大模型-AIGC技术在文本生成与音频生成领域的应用
算法
坚持编程的菜鸟7 小时前
LeetCode每日一题——困于环中的机器人
c语言·算法·leetcode·机器人
Aurorar0rua8 小时前
C Primer Plus Notes 09
java·c语言·算法
我不是QI11 小时前
DES 加密算法:核心组件、加解密流程与安全特性
经验分享·算法·安全·网络安全·密码学
前端小刘哥11 小时前
新版视频直播点播EasyDSS平台,让跨团队沟通高效又顺畅
算法
明月(Alioo)12 小时前
机器学习入门,无监督学习之K-Means聚类算法完全指南:面向Java开发者的Python实现详解
python·算法·机器学习
叶梅树12 小时前
从零构建A股量化交易工具:基于Qlib的全栈系统指南
前端·后端·算法
lingran__12 小时前
算法沉淀第三天(统计二进制中1的个数 两个整数二进制位不同个数)
c++·算法
MicroTech202512 小时前
微算法科技MLGO推出隐私感知联合DNN模型部署和分区优化技术,开启协作边缘推理新时代
科技·算法·dnn
小冯记录编程13 小时前
深入解析C++ for循环原理
开发语言·c++·算法