题意理解:
如果矩阵中某个点的值为0,则该点所在的行和列上所有的数均设置为0;
题目分析:
为了降低空间复杂度,需要在当前数组进行设置为0的操作:使用一个list记录所有值为0的位置,然后再对先前的数组进行对应行列设置为0的操作;
解题代码:
public class Solution {
private class Pair{
public int x;
public int y;
public Pair(int xIn, int yIn){
this.x=xIn;
this.y=yIn;
}
}
public void setZeroes(int[][] matrix) {
int row=matrix.length;
int col=matrix[0].length;
ArrayList<Pair> list=new ArrayList<Pair>();
for(int i=0; i<row; i++){
for(int j=0; j<col; j++){
if(matrix[i][j]==0){
list.add(new Pair(i,j));
}
}
}
for(Iterator iter=list.iterator(); iter.hasNext();){
Pair p=(Pair)iter.next();
int x=p.x;
int y=p.y;
for(int i=0; i<col; i++){
matrix[x][i]=0;
}
for(int i=0;i<row;i++){
matrix[i][y]=0;
}
}
}
}