给定一个 m x n
的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。
示例 1:
输入:matrix = [[1,1,1],[1,0,1],[1,1,1]] 输出:[[1,0,1],[0,0,0],[1,0,1]]
示例 2:
输入:matrix = [[0,1,2,0],[3,4,5,2],[1,3,1,5]] 输出:[[0,0,0,0],[0,4,5,0],[0,3,1,0]]
本体可以在第一遍遍历的时候把需要置零的位置记录下来,第二遍将需要的位置操作
用a[0] a[1]分别记录横纵坐标
class Solution {
public void setZeroes(int[][] matrix) {
ArrayList<Integer[]> list = new ArrayList();
for(int i = 0;i<matrix.length;i++){
for(int j = 0;j<matrix[i].length;j++){
if(matrix[i][j] == 0){
Integer a[] = new Integer[2];
a[0] = i;
a[1] = j;
list.add(a);
}
}
}
for(int k = 0;k<list.size();k++){
Integer[] a = list.get(k);
SetZero(matrix,a[0],a[1]);
}
}
public void SetZero(int [][]matrix,int x ,int y){
for(int i = 0;i<matrix.length;i++){
matrix[i][y] = 0;
}
for(int j = 0;j<matrix[x].length;j++){
matrix[x][j] = 0;
}
}
}