01 Matrix

题目来源
给一个01矩阵,求矩阵中的1最近的0离它有多远,更新矩阵变为一个距离矩阵。
我想着从左上到右下遍历一遍,从右下到左上遍历一遍。
代码如下:

class Solution {
public:
    vector> updateMatrix(vector>& matrix) {
        int rows = matrix.size(), cols = matrix[0].size();
        vector> dirs{{0, -1}, {-1, 0}, {1, 0}, {0, 1}};
        for (int i=0; i= 0 && i+dirs[k][0] < rows && j+dirs[k][1] >= 0 && j+dirs[k][1] < cols)
                            matrix[i][j] = min(matrix[i][j], matrix[i + dirs[k][0]][j + dirs[k][1]] + 1);
                    }
                }
            }
        for (int i=rows-1; i>=0; i--)
            for (int j=cols-1; j>=0; j--) {
                if (matrix[i][j] != 0) {
                    for (int k=2; k= 0 && i+dirs[k][0] < rows && j+dirs[k][1] >= 0 && j+dirs[k][1] < cols)
                            matrix[i][j] = min(matrix[i][j], matrix[i + dirs[k][0]][j + dirs[k][1]] + 1);
                    }
                }
            }
        return matrix;
    }
};

你可能感兴趣的:(01 Matrix)