示例 1:
输入:
[
[1,1,1],
[1,0,1],
[1,1,1]
]
输出:
[
[1,0,1],
[0,0,0],
[1,0,1]
]
示例 2:
输入:
[
[0,1,2,0],
[3,4,5,2],
[1,3,1,5]
]
输出:
[
[0,0,0,0],
[0,4,5,0],
[0,3,1,0]
]
作者:LeetCode
链接:https://leetcode.cn/leetbook/read/array-and-string/ciekh/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
每次找到等于零的那一个把对应的行和列都置零即可,但是会出现一个问题就是到最后所有的元素都变成零了;
因此,既然打算将整行和整列清零,因此并不需要标记录它是cell[2][4](行2,列4),只需要知道行2有个元素为0,列4有个元素为0.不管怎样,整行和整列都要清零,又何必要记录零元素的确切位置?

作者:DonYong
链接:https://leetcode.cn/leetbook/read/array-and-string/ciekh/?discussion=JGA6Zo
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
考虑到了如果不做标记话会全部置零的情况,但一开始是对确切位置的记录,但是大佬的思路就显得巧妙了,对行和列单独记录。
得以借鉴!
- package Day2;
-
- public class Test3 {
- public static void SetZeros(int[][] matrix) {
- boolean[] row= new boolean[matrix.length];
- boolean[] column= new boolean[matrix.length];
- int m=matrix.length;
- int n=matrix[0].length;
- for(int i=0;i
- for(int j=0;j
- if(matrix[i][j]==0) {
- row[i]=true;
- column[j]=true;
- }
- }
- }
-
- for(int i=0;i
- for(int j=0;j
- if(row[i]||column[j]) {
- matrix[i][j]=0;
- }
- System.out.print(matrix[i][j]);
- }
- System.out.println();
- }
- }
-
- public static void main(String[] args) {
- int[][] a= {{0,1,2},{1,2,3},{0,5,6}};
- SetZeros(a);
- }
-
- }
-
相关阅读:
多进程编程(五):信号量
【Android 内存优化】KOOM 快手开源框架线上内存监控方案-源码剖析
【前端开发基础知识&快速入门】
Docker学习-Docker镜像概述和分层原理
使用iPXE自动化安装ubuntu22.04
高内聚低耦合
【云开发】- 在小程序端操作云存储
【笔记】echarts图表的缩放和鼠标滚动冲突的处理解决方案
51单片机导盲手杖_超声波测距+DS18B20测温设计
如何搭建下载下来的机器学习深度学习的项目的环境?
-
原文地址:https://blog.csdn.net/m0_64132509/article/details/136607335