给定一个矩阵,如果一个元素为0,则其所在行和所在列都置为0.
乍一看很好解决——碰到一个为零的元素,就把它所在行列的其它元素置0就好了嘛,但实际一执行起来,就会有问题。因为如果就在原矩形上置0的话,最后的结果是整个矩阵都为0了。如果碰到matrix(00) = 0就把第一行和第一列都置为了0,然后的循环就会把所有的元素都置为0,得不出最终结果:
不in-place,记录要置0的行列。
使用两个数组rows和cols,分别记录要置0的行、列,遍历一次矩阵,如果当前元素(ij)为0,则rows[i]=true cols[j]=true,遍历结束后再根据rows和cols将矩阵该置0的行、列置0。时间复杂度O(n2),空间复杂度O(m+n)。
《逆向工程核心要点》读书笔记 1. 逆向工程与代码逆向工程 逆向工程(Reverse Engineering,简称RE),一般指,通过分析物体、机械设备或系统,了解其结构、功能和行为等,掌握其中原理并改善不足之处、添加新创意的一系列过程 代码逆向工程(Reverse Code Engineering,简称RCE)是逆向工程在软件领域中的应用 逆向工程包含多种,对软件进行逆向工程只是其中的一种。 2. 代码逆向分析法 分析可执行文件时使用的方法大致分为两种:静态分析与动态分析 2.1 静态分析 不执行代码对代码进行分析。只通过观察文件的外部特征,如文件类型、