Given an m x n integer matrix matrix, if an element is 0, set its entire row and column to 0’s.
You must do it in place.
Example 1:
Input: matrix = [[1,1,1],[1,0,1],[1,1,1]]
Output: [[1,0,1],[0,0,0],[1,0,1]]
Example 2:
Input: matrix = [[0,1,2,0],[3,4,5,2],[1,3,1,5]]
Output: [[0,0,0,0],[0,4,5,0],[0,3,1,0]]
class Solution {
public void setZeroes(int[][] matrix){
int m=matrix.length, n=matrix[0].length;
int rowsArray[]= new int[m];
int colsArray[]= new int[n];
Arrays.fill(rowsArray,1); //rows填滿1
Arrays.fill(colsArray,1); //columns填滿1
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
if(matrix[i][j]==0){
rowsArray[i]=0;
colsArray[j]=0;
}
}
}
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
if(rowsArray[i]==0 || colsArray[j]==0)
matrix[i][j]=0;
}
}
}
}
Time: O(mn) Space: O(m+n)
class Solution {
public void setZeroes(int[][] matrix){
int m=matrix.length, n=matrix[0].length;
boolean isRow0=false, isCol0=false;
for(int j=0;j<n;j++){
if(matrix[0][j]==0)
isRow0=true;
}
for(int i=0;i<m;i++){
if(matrix[i][0]==0)
isCol0=true;
}
for(int i=1;i<m;i++){
for(int j=1;j<n;j++){
if(matrix[i][j]==0){
matrix[i][0]=0;
matrix[0][j]=0;
}
}
}
for(int i=1;i<m;i++){
for(int j=1;j<n;j++){
if(matrix[0][j]==0 || matrix[i][0]==0)
matrix[i][j]=0;
}
}
if(isRow0){
for(int j=0;j<n;j++)
matrix[0][j]=0;
}
if(isCol0){
for(int i=0;i<m;i++)
matrix[i][0]=0;
}
}
}
Time: O(m*n) Space: O(1)