零矩阵

此博客链接:

零矩阵

题目链接:https://leetcode-cn.com/leetbook/read/array-and-string/ciekh/

题目

编写一种算法,若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]
]

题解

先求出矩阵的行数,遍历矩阵,当遍历到0时,把行和列都置为0,这里需要重新定义一个变量,从0开始把0所在的行和列置0用的。这里有个问题就是被置为0的会被重新认为是0,会把置为0的行和列再次置为0。这里我设置了一个标志位,对原来数组中的0设置标志,如果是原来数组中的0后面才把行和列都置为0.

代码

class Solution {
    public void setZeroes(int[][] matrix) {
     int row=matrix.length;
     int col=matrix[0].length;
     int h=0;
     int l=0;
     int flag[][]=new int [row][col];
     for(int i=0;i<row;i++){
         for(int j=0;j<col;j++){
             if(matrix[i][j]==0){
                 flag[i][j]=0;
             }
             else{
                 flag[i][j]=1;
             }
         }
     }
     for(int i=0;i<row;i++)
     {
         for(int j=0;j<col;j++){
             if(matrix[i][j]==0&&flag[i][j]==0){
                 h=0;
                 l=0;
                 while(h<row){
                      matrix[h][j]=0;
                      h++;
                 }
                   while(l<col){
                      matrix[i][l]=0;
                      l++;
                   }
             }
         }
     }
    }
}

结果

出来混总是要还的
原文地址:https://www.cnblogs.com/ping2yingshi/p/14888742.html