package k;
import java.util.ArrayList;
import java.util.List;
public class SetMatrixZeroes {
public void setZeroes(int[][] matrix) {
int x=matrix.length;
int y=matrix[0].length;
int x1,y1;
List<List> arr=new ArrayList<>();
for(int i=0;i<x;i++)
{
for(int j=0;j<y;j++)
{
if(matrix[i][j]==0)
{
List<Integer> a=new ArrayList<>();
a.add(i);
a.add(j);
arr.add(a);
// System.out.println(arr.get(arr.size()-1));
}
}
}
for(int k=0;k<arr.size();k++){
x1=(int)arr.get(k).get(0);
y1=(int)arr.get(k).get(1);
//System.out.println(x1+" "+arr.get(k).get(1));
for(int i=0;i<x;i++)
{
matrix[i][y1]=0;
}
for(int j=0;j<y;j++)
{
matrix[x1][j]=0;
}
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[][] max={{0,0,0,5},{4,3,1,4},{0,1,1,4},{1,2,1,3},{0,0,1,1}};
SetMatrixZeroes kMatrixZeroes=new SetMatrixZeroes();
kMatrixZeroes.setZeroes(max);
}
import java.util.ArrayList;
import java.util.List;
public class SetMatrixZeroes {
public void setZeroes(int[][] matrix) {
int x=matrix.length;
int y=matrix[0].length;
int x1,y1;
List<List> arr=new ArrayList<>();
for(int i=0;i<x;i++)
{
for(int j=0;j<y;j++)
{
if(matrix[i][j]==0)
{
List<Integer> a=new ArrayList<>();
a.add(i);
a.add(j);
arr.add(a);
// System.out.println(arr.get(arr.size()-1));
}
}
}
for(int k=0;k<arr.size();k++){
x1=(int)arr.get(k).get(0);
y1=(int)arr.get(k).get(1);
//System.out.println(x1+" "+arr.get(k).get(1));
for(int i=0;i<x;i++)
{
matrix[i][y1]=0;
}
for(int j=0;j<y;j++)
{
matrix[x1][j]=0;
}
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[][] max={{0,0,0,5},{4,3,1,4},{0,1,1,4},{1,2,1,3},{0,0,1,1}};
SetMatrixZeroes kMatrixZeroes=new SetMatrixZeroes();
kMatrixZeroes.setZeroes(max);
}
}
几乎是最low 的方法,还有一种空间复杂度为O(m+n),对长度为m+n的数组进行标位,行行行,竖竖竖
还有空间复杂度为O(1)的