走自己的路----542. 01 矩陣

給定一個由 0 和 1 組成的矩陣,找出每個元素到最近的 0 的距離。

兩個相鄰元素間的距離爲 1 。

示例 1:
輸入:

0 0 0
0 1 0
0 0 0
輸出:

0 0 0
0 1 0
0 0 0
示例 2:
輸入:

0 0 0
0 1 0
1 1 1
輸出:

0 0 0
0 1 0
1 2 1
注意:

給定矩陣的元素個數不超過 10000。
給定矩陣中至少有一個元素是 0。
矩陣中的元素只在四個方向上相鄰: 上、下、左、右。

public int[][] updateMatrix(int[][] matrix) {
        int m = matrix.length;
        int n= matrix[0].length;
        Queue<int[]> q = new LinkedList<>();
        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                if(matrix[i][j]==0){
                    q.offer(new int[]{i,j});
                }else {
                    matrix[i][j] = -1;
                }
            }
        }
        int dx[] = {0,0,-1,1};
        int dy[] = {1,-1,0,0};
        while(!q.isEmpty()){
            int point[] = q.poll();
            int x = point[0],y=point[1];
            for(int i=0;i<4;i++){
                int idx = x+dx[i];
                int idy = y+dy[i];
                if(idx>=0&&idx<m&&idy>=0&&idy<n&&matrix[idx][idy]==-1){
                    matrix[idx][idy] = matrix[x][y]+1;
                    q.offer(new int[]{idx,idy});
                }
            }
        }
        return matrix;
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章