Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place.
Subscribe to see which companies asked this question
思路是以最外层的matrix[0][x],和matrix[y][0]为标记位,如果中间出现0,则对应的最外层标记为0,最后统计时候先不统计最外层的,最后再计算最外层的
public class Solution {
public void setZeroes(int[][] matrix) {
int m = matrix.length;
int n = matrix[0].length;
boolean x = false,y = false;
for(int i = 0;i < m; i++)
{
for (int j = 0; j < n; j++) {
if(matrix[i][j]==0)
{
matrix[0][j] = 0;
matrix[i][0] = 0;
if(i == 0) x = true;
if(j == 0) y = true;
}
}
}
for (int i = 1; i < m; i++) {
if(matrix[i][0]==0)
{
for (int j = 1; j < n; j++) {
matrix[i][j] = 0;
}
}
}
for (int j = 1; j < n; j++) {
if(matrix[0][j]==0)
{
for (int i = 1; i < m; i++) {
matrix[i][j] = 0;
}
}
}
if(x)
{
for (int j = 0; j < n; j++) {
matrix[0][j] = 0;
}
}
if(y)
{
for (int i = 0; i < m; i++) {
matrix[i][0] = 0;
}
}
}
}