Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place.
Follow up:
Did you use extra space?
A straight forward solution using O(mn) space is probably a bad idea.
A simple improvement uses O(m + n) space, but still not the best solution.
Could you devise a constant space solution?
题解:使用两个boolean数组保存为0的位置。
public class Solution73 {
public void setZeroes(int[][] matrix) {
boolean rows[] = new boolean[matrix.length];
boolean cols[] = new boolean[matrix[0].length];
for(int i=0; i<matrix.length; i++){
for(int j=0; j<matrix[0].length; j++){
if(matrix[i][j] == 0){
rows[i] = true;
cols[j] = true;
}
}
}
for(int i=0; i<rows.length; i++){
if(rows[i]){
for(int k=0; k<matrix[0].length; i++){
matrix[i][k] = 0;
}
}
}
for(int i=0; i<cols.length; i++){
if(cols[i]){
for(int k=0; k<matrix.length; i++){
matrix[k][i] = 0;
}
}
}
}
}
这不是最好的空间复杂度O(n*m),不知道怎么用O(1)的解法。