题目来源:leetcode
Given a
m x
n matrix, if an element is 0, set its entire row and column to 0. Do it in place.
Follow up:
Did you use extra space?
A straight forward solution using O(mn) space is probably a bad idea.
A simple improvement uses O(m + n) space, but still not the best solution.
Could you devise a constant space solution?
思路:分别记录每存在0的行,0的列单独处理(只会笨方法刷简单题?)时间O(mn)空间O(m+n)
/**
* Created by a819 on 2017/8/17.
*/
import java.util.*;
public class SetZero {
public void setZeroes(int[][] matrix) {
Set<Integer> row=new LinkedHashSet<>();//记录存在0的行
Set<Integer> col=new LinkedHashSet<>();//记录存在0的咧
if(matrix.length==0)
return ;
int lenr=matrix.length;
int lenc=matrix[0].length;
for(int i=0;i<lenr;i++){
for(int j=0;j<lenc;j++){
if(matrix[i][j]==0)
row.add(i);
col.add(j);
}
}
for(int i:row)//处理存在0的行
for (int j=0;j<lenc;j++)
matrix[i][j]=0;
for(int i:col)//处理存在0的列
for (int j=0;j<lenr;j++)
matrix[j][i]=0;
}
/*
public static void main(String[] args) {
System.out.println(new Integer(5) == Integer.parseInt("5"));
System.out.println(Integer.valueOf(500) == Integer.valueOf(500));
}*/
}