给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用算法。
示例 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]] 一开始我想的是找到所有带0的行和列 放到row[m]和col[n]里,这样需要m+n的额外空间。 后来看了别人的解后 发现可以把第一行第一列当做上面的row[m]和col[n]来用,当然这就需要先记录下首行首列是否要置0,这样只需要2个int的额外空间。 下面是是代码,写得比较散,但是便于理解,以后可以把它们合并起来。
void setZeroes(int** matrix, int matrixRowSize, int matrixColSize) { if(matrixRowSize==0||matrixColSize==0) return; int m=matrixRowSize; int n=matrixColSize; int i,j; int firstRow=0; int firstCol=0; for(i=0;i