zoukankan      html  css  js  c++  java
  • 542. 01 Matrix

    Given a matrix consists of 0 and 1, find the distance of the nearest 0 for each cell.
    
    The distance between two adjacent cells is 1.
    Example 1: 
    Input:
    
    0 0 0
    0 1 0
    0 0 0
    Output:
    0 0 0
    0 1 0
    0 0 0
    Example 2: 
    Input:
    
    0 0 0
    0 1 0
    1 1 1
    Output:
    0 0 0
    0 1 0
    1 2 1
    Note:
    The number of elements of the given matrix will not exceed 10,000.
    There are at least one 0 in the given matrix.
    The cells are adjacent in only four directions: up, down, left and right.

    矩阵的bfs, 考察:

    1.哪些是先入队的? 外围? 还是遍历所有符合条件的? 此处改成Integer.Max_Value, 

    2.入队之后, 邻居元素怎么改让其入队. 怎么跳过不符合题意的元素, visited[] 是否使用

    3一般用在改矩阵的题中 tips, 可以该元素e.g. 将'o' 改成'$'(见130. Surrounded Regions)

    public int[][] updateMatrix(int[][] matrix) {
            int m  = matrix.length;
            int n = matrix[0].length;
            Queue<int[]> queue = new LinkedList<>();
            for (int i = 0; i < m; i++) {
                for (int j = 0; j < n; j++) {
                    if (matrix[i][j] == 0) {
                        queue.offer(new int[]{i, j});
                    } else {
                        matrix[i][j] = Integer.MAX_VALUE;
                    }
                    
                }
            }
            int[][] dirs = {{0, 1}, {1, 0}, {-1, 0}, {0, -1}};
            while (!queue.isEmpty()) {
                int[] cur = queue.poll();
                for (int[] cell : dirs) {
                    int r = cur[0] + cell[0];
                    int c = cur[1] + cell[1];
                
                    if (r < 0 || r >= m || c < 0 || c >= n || matrix[r][c] <= matrix[cur[0]][cur[1]] + 1) {
                        continue;
                    }
                    matrix[r][c] = matrix[cur[0]][cur[1]] + 1;
                    queue.offer(new int[]{r,c});
                }
            }
            return matrix;
        }
    

    矩阵, 常将元素构造类使用: queue.offer(new int[]{r,c})  此处可以构造类

  • 相关阅读:
    Realtime crowdsourcing
    maven 常用插件汇总
    fctix
    sencha extjs4 command tools sdk
    首次吃了一颗带奶糖味的消炎药,不知道管用不
    spring mvc3 example
    ubuntu ati driver DO NOT INSTALL recommand driver
    yet another js editor on windows support extjs
    how to use springsource tools suite maven3 on command
    ocr service
  • 原文地址:https://www.cnblogs.com/apanda009/p/7273113.html
Copyright © 2011-2022 走看看