题目
给定一个矩阵,若某元素为0,则将该元素的行和列清零
算法
找到第一个0元素,使用该元素的行来记录需要清零的列,该元素的列记录需要清零的行
再扫描,一次清零
import java.util.*;
public class Solution{
public void setZeroes(int[][] matrix){
int m=matrix.length;
int n=matrix[0].length;
int x=-1,y=-1;
for(int i=0;i<m;i++){
for(int j=0;j<n;j++)
if(matrix[i][j]==0){
if(x==-1 && y==-1){
//找到第一个0元素
x=i;
y=j;
}else{
matrix[x][j]=0;
matrix[i][y]=0;
}
}
}
//如果找不到0,直接返回
if(x==-1||y==-1)
return;
for(int i=0;i<m;i++)
for(int j=0;j<n;j++){
if(matrix[x][j]==0||matrix[i][y]==0)
//清零
matrix[i][j]=0;
}
}
}