leetcode Set Matrix Zeroes

题目链接

思路:
没有思路

public class Solution {
  int m;
    int n;
    boolean recordRow[];
    boolean recordCol[];

    public void setZeroes(int[][] matrix) {
        int m=matrix.length;
        int n=matrix[0].length;
        recordRow=new boolean [m];
        recordCol=new boolean [n];
        for(int i=0;i<m;i++)
        {

            for(int k=0;k<n;k++)
            {

                if(matrix[i][k]==0&&!recordCol[k])
                {
                    recordRow[i]=true;
                    recordCol[k]=true;
                    for(int i1=0;i1<m;i1++)
                    {
                        if(matrix[i1][k]==0)
                        {
                            recordRow[i1]=true;
                        }
                        else
                        {
                            matrix[i1][k]=0;
                        }
                    }

                }

            }
            if(recordRow[i])
            {
                for(int k=0;k<n;k++)
                matrix[i][k]=0;
            }
        }
    }
}

大神的解答

其实也没改进多少。

public class Solution {
public void setZeroes(int[][] matrix) {
    boolean fr = false,fc = false;
    for(int i = 0; i < matrix.length; i++) {
        for(int j = 0; j < matrix[0].length; j++) {
            if(matrix[i][j] == 0) {
                if(i == 0) fr = true;
                if(j == 0) fc = true;
                matrix[0][j] = 0;
                matrix[i][0] = 0;
            }
        }
    }
    for(int i = 1; i < matrix.length; i++) {
        for(int j = 1; j < matrix[0].length; j++) {
            if(matrix[i][0] == 0 || matrix[0][j] == 0) {
                matrix[i][j] = 0;
            }
        }
    }
    if(fr) {
        for(int j = 0; j < matrix[0].length; j++) {
            matrix[0][j] = 0;
        }
    }
    if(fc) {
        for(int i = 0; i < matrix.length; i++) {
            matrix[i][0] = 0;
        }
    }

}

你可能感兴趣的:(leetcode Set Matrix Zeroes)