本人电子系,只为一学生。心喜计算机,小编以怡情。
给定一个m×n矩阵,如果一个元素是0,则将其所在行和列全部元素变成0。
需要在原矩阵上完成操作。
您在真实的面试中是否遇到过这个题? Yes
样例
给出一个矩阵
[
[1, 2],
[0, 3]
]
返回
[
[0, 2],
[0, 0]
]
static public void setZeroes(int[][] matrix) {//查找为0部分
// write your code here
if(matrix.length==0) return ;
int visited[][]=new int[matrix.length][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&&visited[i][j]==0) {
clear(matrix,visited,i,j);
}
}
}
static public void clear(int[][] matrix,int visited[][],int i,int j) {//清零的小函数
for(int m=0;m<matrix[0].length;m++){
if(matrix[i][m]!=0) {//注意这里将本来为0的略过去
matrix[i][m]=0;
visited[i][m]=1;
}
}
for(int n=0;n<matrix.length;n++) {
if (matrix[n][j] != 0) {
matrix[n][j] = 0;
visited[n][j] = 1;
}
}
}