题目:
分析:
这道题如果没有空间限制的话
我会另设一个m*n的数组作为标记数组来方便计算
不过既然他要求空间负责度是1的话
我们也可以有办法这样做
只需要将数组中的0都换成某个标记数
然后进行换0即可
代码:
class Solution {
public void setZeroes(int[][] matrix) {
int n=matrix.length;
int m=matrix[0].length;
int count=0;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(matrix[i][j]==0) {
matrix[i][j] = Integer.MIN_VALUE+1;
count++;
}
}
}
//减少时间
if(count==0) return;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(matrix[i][j]==Integer.MIN_VALUE+1)
{
matrix[i][j]=0;
for(int k=0;k<m;k++){
if(matrix[i][k]!=Integer.MIN_VALUE+1)
matrix[i][k]=0;
}
for(int k=0;k<n;k++){
if(matrix[k][j]!=Integer.MIN_VALUE+1)
matrix[k][j]=0;
}
}
}
}
}
}