题目:牛客网
解题思路:
创建两个集合,分别保存要重置为0的行与列
遍历matrix,如果找到某数为0,将所在行与列存储到集合中
将集合中保存的行数与列数分别遍历出来,分别将整行与整列置0
import java.util.HashSet;
public class Solution {
public void setZeroes(int[][] matrix) {
// 创建两个集合,分别保存要重置为0的行与列
HashSet<Integer> row = new HashSet();
HashSet<Integer> col = new HashSet();
// 遍历matrix,如果找到某数为0,将所在行与列存储到集合中。
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[0].length; j++) {
if (matrix[i][j] == 0) {
row.add(i);
col.add(j);
}
}
}
//将集合中保存的行数与列数分别遍历出来,分别将整行与整列置0
for (Object num : row.toArray())
for (int i = 0; i < matrix[0].length; i++) {
matrix[(int) num][i] = 0;
}
for (Object num : col.toArray())
for (int i = 0; i < matrix.length; i++) {
matrix[i][(int) num] = 0;
}
}
}