力扣第73题
创始人
2024-02-25 01:19:16
0

一、题目:73. 矩阵置零
73
二、题目解析:

解题步骤:注意题目要求原地算法–>利用矩阵的第一行和第一列记录矩阵需要置0的行和列,只要把0所在行和列的第一个位置置为0,
然后再根据第一行和第一列0的位置,对矩阵置0即可

  1. 定义两个boolean变量,遍历矩阵中第一行和第一列是否存在0,存在则置为true
  2. 从二维数组中的第一行和第一列开始遍历是否存在0,存在则将当前元素所在行的第一个元素和所在列的第一个元素置为 0
  3. 从二维数组中的第一行和第一列开始遍历,只要当前元素对应的第一行或第一列有一个元素为0,则将当前元素更新为 0
  4. 最后根据两个boolean变量,判断是否需要将第一行和第一列置为0,需要则将该行或列置0即可

图示:

73

三、代码如下:

public int[][] setZero(int[][] matrix){int m = matrix.length;int n = matrix[0].length;boolean rowZero = false;boolean colZero = false;for(int i = 0;i < m; i++){//判断第一列是否存在0if(matrix[i][0] == 0){colZero = true;}}for (int j = 0 ;j < n; j++){//判断第一行是否存在0if(matrix[0][j] == 0){rowZero = true;}}for(int i = 1;ifor(int j = 1; jif(matrix[i][j] == 0){//如果当前元素等于 0,则将当前元素所在行的第一个元素和所在列的第一个元素置为 0matrix[i][0] = matrix[0][j] = 0;}}}for(int i = 1;ifor(int j = 1; j//只要当前元素对应的第一行或第一列有一个元素为0,则将当前元素更新为 0if(matrix[i][0] == 0 || matrix[0][j] ==0){matrix[i][j] = 0;}}}if(rowZero){for (int i = 0; i < n; i++) {matrix[0][i] = 0;}}if(colZero){for (int i = 0;i < m;i++){matrix[i][0] = 0;}}return matrix;}

四、测试
73

五、结束

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...