原题:
Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place.
题意:
给一个矩阵,如果某点的值为0,那么把它所在的行和列全部置为0
代码和思路:
class Solution {
public void setZeroes(int[][] matrix) {
int m = matrix.length;
int n = matrix[0].length;
//第一行或第一列是否有为0的
boolean fr = false;
boolean fc = false;
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
if(matrix[i][j]==0){
//如果找到的数在第一行或者第一列,设置判断常量为 true
if(i==0) fr = true;
if(j==0) fc = true;
//找到为0的数,先将他顶端和左端设为0,为之后向下覆盖做好准备
matrix[0][j] = 0;
matrix[i][0] = 0;
}
}
}
for(int i=1;i<m;i++){
for(int j=1;j<n;j++){
//找到上面设置的顶端或左端为0,开始覆盖行和列
if(matrix[i][0]==0 || matrix[0][j]==0){
matrix[i][j] = 0;
}
}
}
//找到的为0的数字在第一行,把第一行置0
if(fr){
for(int i=0;i<n;i++){
matrix[0][i] = 0;
}
}
//在第一列
if(fc){
for(int j=0;j<m;j++){
matrix[j][0] = 0;
}
}
}
}