当前位置: 首页 > ops >正文

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. 题解

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,则将该位置上的元素设置为零。
http://www.xdnf.cn/news/4492.html

相关文章:

  • C语言初阶--数组
  • GSENSE2020BSI sCMOS科学级相机主要参数及应用场景
  • 探针卡的类型及其在半导体测试中的应用
  • Java高频面试之并发编程-13
  • 奥威BI:AI驱动的智能财务分析革新,重塑企业决策新范式
  • 深入探索 Spark RDD 行动算子:功能解析与实战应用
  • Python基础语法(上)
  • 从图灵机到量子计算:逻辑可视化的终极进化
  • 基于C++实现(控制台)交通咨询系统
  • C语言指针用法详解
  • 切片和边缘计算技术分析报告
  • 【今日三题】跳台阶扩展问题(找规律) / 包含不超过两种字符的最长子串 / 字符串的排列(回溯—全排列)
  • 架设手游使用游戏盾SDK怎么提升网络速度?
  • 【ROS2】Nav2源码之行为树定义、创建、加载
  • 六级阅读———2024.12卷一 仔细阅读2
  • 城楼预约(二):参数逆向分析思路
  • 挑战用豆包教我学Java01天
  • 单地平面6层PCB设计实战:如何兼顾电源与信号完整性?
  • Ubuntu手动安装Consul 的详细步骤
  • 如何选择海外专线网络呢?实现业务覆盖
  • 2025安徽通信施工安全员C证精选练习题
  • 【PostgreSQL数据分析实战:从数据清洗到可视化全流程】6.4 时间序列分析(窗口函数处理时间数据)
  • Vue3项目,用ts写一个方法,生成1到50的随机整数,包含1和50
  • Excel表格怎样导出为csv格式
  • Selenium的driver.get_url 和 手动输入网址, 并点击的操作,有什么不同?
  • WD1016 升压转换器性能特点及应用场景分析
  • C++_MD5算法
  • python+pytest接口自动化测试--日志记录
  • Linux cp 目录A所有内容到目录B
  • 深入探索Linux命名管道(FIFO):原理、实践与高级技巧