方法一:时间复杂度O(Y*X),空间复杂度O(Y+X)。
class Solution {
public void setZeroes(int[][] matrix) {
int Y = matrix.length, X = matrix[0].length;
Set<Integer> rows = new HashSet<>();
Set<Integer> cols = new HashSet<>();
for(int y = 0; y < Y; y++){
for(int x = 0; x < X; x++){
if(matrix[y][x] == 0){
rows.add(y);
cols.add(x);
}
}
}
for(int y = 0; y < Y; y++){
for(int x = 0; x < X; x++){
if(rows.contains(y) || cols.contains(x)){
matrix[y][x] = 0;
}
}
}
}
}
方法二:空间复杂度O(m+n)
方法三:空间复杂度O(常数)