数据结构–零矩阵
若M × N矩阵中某个元素为0,则将其所在的行与列清零
就是对于矩阵里面的元素,若某一个元素为0,就把那一行和列的所有元素都变为0
分析
法一:遍历我的数组,得到为0的,记录它的列,然后如果这一行存在0,那么就让这一行为0.最后把每个记录的列,使其为0,使用的集合是不重复的set
代码实例
我的方法(法一)
class Solution {
public void setZeroes(int[][] matrix) {
boolean flag = false;
Set <Integer> set = new HashSet();
for(int i = 0;i < matrix.length;i++){
for(int j = 0;j < matrix[i].length;j++){
if(matrix[i][j] == 0){
set.add(j);
flag = true;
}
}
if(flag){
matrix[i] = new int[matrix[i].length];
flag = false;
}
}
for(int j:set){
for(int i = 0;i <matrix.length;i++){
matrix[i][j] = 0;
}
}
}
}
法二:
class Solution {
public void setZeroes(int[][] matrix) {
boolean[] row = new boolean[matrix.length];
boolean[] column = new boolean[matrix[0].length];
for(int i=0;i<matrix.length;i++){
for(int j=0;j<matrix[0].length;j++){
if(matrix[i][j]==0){
row[i]=true;
column[j]=true;
}
}
}
for(int i=0;i<matrix.length;i++){
for(int j=0;j<matrix[0].length;j++){
if(row[i]||column[j]){
matrix[i][j]=0;
}
}
}
}
}