Leetcode 73. Set Matrix Zeroes

来源:互联网 发布:java中反射的应用 编辑:程序博客网 时间:2024/06/05 02:31

Reference.

public class Solution {    public void setZeroes(int[][] matrix) {        int row = matrix.length;        int col = matrix[0].length;                // determine if the first row and column need to set zero first        boolean setFirstRow = false, setFirstCol = false;        for (int i=0; i<col; i++)            if (matrix[0][i] == 0) setFirstRow = true;        for (int j=0; j<row; j++)            if (matrix[j][0] == 0) setFirstCol = true;                    // scan rest of the matrix, set the first number as 0 for every row and column if matrix[i][j] == 0         for (int i=1; i<row; i++)            for (int j=1; j<col; j++)                if (matrix[i][j] == 0)                    matrix[0][j] = matrix[i][0] = 0;                            // fill the columns with zeros by scanning the first row        // note that starting from matrix[0][1] (*)        for (int j=1; j<col; j++)            if (matrix[0][j] == 0)                 for (int i=1; i<row; i++)                    matrix[i][j] = 0;                // fill the rows with zeros by scanning the first column        // note that starting from matrix[1][0]        for (int i=1; i<row; i++)            if (matrix[i][0] == 0)                 for (int j=1; j<col; j++)                    matrix[i][j] = 0;            // check if first row or column needs to fill with zeros        if (setFirstRow)            for (int j=0; j<col; j++)                matrix[0][j] = 0;        if (setFirstCol)            for (int i=0; i<row; i++)                matrix[i][0] = 0;    }}


0 0