题目来源于leetcode
编写一种算法,若M × N矩阵中某个元素为0,则将其所在的行与列清零。
示例 1:
输入:
[
[1,1,1],
[1,0,1],
[1,1,1]
]
输出:
[
[1,0,1],
[0,0,0],
[1,0,1]
]
示例 2:
输入:
[
[0,1,2,0],
[3,4,5,2],
[1,3,1,5]
]
输出:
[
[0,0,0,0],
[0,4,5,0],
[0,3,1,0]
]
定义一个新的结果数组result[ ][ ],将初始数组的值复制进去。访问初始数组的每一个元素,如果为0,就将结果数组中对应的行、列置为0。
class Solution {
public void setZeroes(int[][] matrix) {
int hl = matrix.length;
int vl = matrix[0].length;
int[][] result = new int[hl][vl];
for(int k=0;k<hl;k++) {
result[k] = Arrays.copyOf(matrix[k], vl);
}
for(int i=0;i<hl;i++) {
for(int j=0;j<vl;j++) {
if(matrix[i][j]==0) {
for(int m=0;m<vl;m++) {
result[i][m] = 0;
}
for(int n=0;n<hl;n++) {
result[n][j] = 0;
}
}
}
}
for(int a=0;a<hl;a++) {
matrix[a] = Arrays.copyOf(result[a], vl);
}
}
}