题目:
Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place.
分析:
class Solution {
public void setZeroes(int[][] matrix) {
//给定一个数组,如果数组中某个元素是0,则将该元素对应的列和行的元素均设为0
//分析:一旦碰到一个元素为0,那么整个rowEnd和ColEnd均改变,而不是将整个数组均变为0。
//方法:使用一个对应的二维数组标志记录其中有0的位置,以防改变0后,无法删除对应其
boolean [][] flag=new boolean[matrix.length][matrix[0].length];
for(int i=0;i<matrix.length;i++){
for(int j=0;j<matrix[i].length;j++){
if(matrix[i][j]==0){
//标志该位置
flag[i][j]=true;
}
}
}
//更改数据
for(int i=0;i<matrix.length;i++){
for(int j=0;j<matrix[i].length;j++){
//原来就是0的
if(matrix[i][j]==0&&flag[i][j]==true){
//更改行
for(int col=0;col<matrix[i].length;col++){
if(matrix[i][col]!=0){
matrix[i][col]=0;
}
}
//更改列
for(int row=0;row<matrix.length;row++){
if(matrix[row][j]!=0){
matrix[row][j]=0;
}
}
}
}
}
}
}