矩阵置零
矩阵置零
如何达到空间复杂度为O(1)这个没有想到,通过看题解明白了,采用内部矩阵记录,我还是想偏了,我以为用有限个值记录就行了,所以就想不明白不记录全部怎么保证记录正确的,结果发现还是需要足够的值,只不过采用内部矩阵来记录,不新创开辟空间,现在了解了,下次注意。
附我的代码,当然不如题解代码:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31public void setZeroes(int[][] matrix) {
int m = matrix.length;
int n = matrix[0].length;
HashSet<Integer> row = new HashSet<Integer>();
HashSet<Integer> col = new HashSet<Integer>();
int index = 0;
for(int i =0;i<m;i++){
for(int j = 0;j<n;j++){
if(matrix[i][j] == 0){
row.add(i);
col.add(j);
}
}
}
for(int i: row){
for(int j = 0;j<n;j++){
if(matrix[i][j]!=0){
matrix[i][j] = 0;
}
}
}
for(int i: col){
for(int j = 0;j<m;j++){
if(matrix[j][i]!=0){
matrix[j][i] = 0;
}
}
}
}