博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Algorithms—73.Set Matrix Zeroes
阅读量:2460 次
发布时间:2019-05-11

本文共 1035 字,大约阅读时间需要 3 分钟。

思路:首先是O(m+n)空间复杂度的方法,新开辟空间,然后遍历所有的点,如果有那个点的值为0,则将其横纵坐标的值记录进去。然后是空间复杂度为常数的。即把这些横纵坐标记录在原数组中,改为0即可。但是需要注意的是2点,1.在查询前先判断(x,0)和(0,y)两条线上是否存在0的点。2.重新遍历赋值的时候值修改除上述2条线的内部结构。3.再根据1中查询的结果决定是否修改这2条线。

public class Solution {    public void setZeroes(int[][] matrix) {    	boolean f=true;    	for (int i = 0; i < matrix.length; i++) {			if (matrix[i][0]==0) {				f=false;				break;			}		}    	boolean l=true;    	for (int i = 0; i < matrix[0].length; i++) {			if (matrix[0][i]==0) {				l=false;			}		}        for (int i = 0; i < matrix.length; i++) {			for (int j = 0; j < matrix[i].length; j++) {				if (matrix[i][j]==0) {					matrix[i][0]=0;					matrix[0][j]=0;				}			}		}        for (int i = 1; i < matrix.length; i++) {			for (int j = 1; j < matrix[i].length; j++) {				if (matrix[i][0]==0||matrix[0][j]==0) {					matrix[i][j]=0;				}			}		}        if (!f) {			for (int i = 0; i < matrix.length; i++) {				matrix[i][0]=0;			}		}        if (!l) {        	for (int i = 0; i < matrix[0].length; i++) {				matrix[0][i]=0;			}		}    }}

耗时:396ms,中游。

你可能感兴趣的文章
如何在Ubuntu中安装OpenGL。 的Linux
查看>>
python set交集_Python Set交集()方法与示例
查看>>
c#中将整数转化为字符串_在C#中将char数组转换为字符串
查看>>
Java Collections shuffle()方法和示例
查看>>
python 生成对称矩阵_创建对称矩阵| 使用Python的线性代数
查看>>
Java LinkedList getLast()方法与示例
查看>>
数字信号时序电路_数字电子中的时序电路
查看>>
Java Collection Framework中的堆栈类
查看>>
stack.peek_C.示例中的Stack.Peek()方法
查看>>
32位系统能够识别多达内存_C ++程序可打印多达N个术语的卢卡斯系列
查看>>
Java ArrayList trimToSize()方法与示例
查看>>
Java Byte类parseByte()方法的示例
查看>>
java 方法 示例_Java CollectionsEmptyMap()方法与示例
查看>>
Java FileDescriptor valid()方法与示例
查看>>
java define_Java Integer类的define()方法与示例
查看>>
strictmath_Java StrictMath toDegrees()方法与示例
查看>>
奇数 横竖斜总和相等_将集合分成相等总和的k个子集
查看>>
data.add方法c#_清单 .Add()方法与C#中的示例
查看>>
js 验证护照_护照本地策略第1部分| Node.js
查看>>
scala编程_Scala概述| Scala编程教程
查看>>