美文网首页
LeetCode-01矩阵

LeetCode-01矩阵

作者: 步芦 | 来源:发表于2020-04-17 12:31 被阅读0次

给定一个由0和1组成的矩阵,找出每个元素到最近的 0 的距离两个相邻元素间的距离为 1 。

快速浏览
  1. 超级原点
  2. 广度优先
  3. 分层计算
代码一览

队列被用于广度优先的存储,因为可以先进先出,又JAVA中Queue是个抽象类,所以使用实现该类的LinkedList。对于方向的控制,用两个数组bx\by来控制,显得更加清晰。

这题最主要的是需要想到用广度优先的搜索算法,代码具体实现比较简单。

public int[][] updateMatrix(int[][] matrix) {
        int m = matrix.length;
        int n = matrix[0].length;

        Queue< int[] > q = new LinkedList<>();
        boolean[][] marked = new boolean[m][n];
        int[][] ans = new int[m][n];

        for(int i = 0; i < m; i ++) {//初始化
            for(int j = 0; j < n; j ++) {
                marked[i][j] = false;
                if(matrix[i][j] == 0) {
                    marked[i][j] = true;
                    q.add(new int[]{i,j});
                    ans[i][j] = 0;
                }
            }
        }
        int[] bx = {0,1,0,-1};//方向矢量
        int[] by = {1,0,-1,0};
        while (!q.isEmpty()) {
            int[] xy = q.poll();
            int x = xy[0];
            int y = xy[1];
            for(int i = 0; i < 4; i ++) {
                if( 0 <= x + bx[i] && x + bx[i] < m
                        && 0 <= y + by[i] && y + by[i] < n
                        && !marked[x + bx[i]][y + by[i]]) {// 周围的点未被标记
                    marked[x + bx[i]][y + by[i]] = true;
                    q.add(new int[]{x + bx[i],y + by[i]});
                    ans[x + bx[i]][y + by[i]] = ans[x][y] + 1;
                }
            }
        }
        return ans;
    }

相关文章

  • LeetCode-01矩阵

    给定一个由0和1组成的矩阵,找出每个元素到最近的 0 的距离两个相邻元素间的距离为 1 。 快速浏览 超级原点 广...

  • leetcode-01矩阵

    这道题感觉很难理解,用了BFS方法。先是将位置为0的入队列,然后一圈圈扩展,位置为1的入队列。看下面链接详解。 利...

  • 逆矩阵

    逆矩阵对任意矩阵,如果存在一个矩阵,使,则称矩阵可逆,矩阵为矩阵的逆矩阵。 奇异矩阵并不是所有的矩阵都有逆矩阵,没...

  • 1、矩阵的概念及运算

    一、什么是矩阵 矩阵的概念 特殊矩阵 零矩阵 行矩阵 列矩阵 方阵 对角阵(对角阵、纯量矩阵、单位矩阵 ) 三角...

  • 矩阵代数(四)- 分块矩阵

    小结 分块矩阵 分块矩阵运算 分块矩阵的逆 分块矩阵 矩阵,也可写成分块矩阵的形状,它的元素是分块(子矩阵) 加法...

  • 基础矩阵、本质矩阵,单应矩阵及其解法

    本质矩阵,基础矩阵,单应矩阵,自由度及其解法基本矩阵、本质矩阵和单应矩阵基本矩阵的基本解法之8点算法单应矩阵与基础...

  • 矩阵

    1. 线性方程组 2. 矩阵定义 3. 矩阵运算 矩阵的加法矩阵的加法 数与矩阵相乘数与矩阵相乘 矩阵与矩阵相乘矩...

  • ML特训营笔记2

    线性代数 矩阵 1.矩阵的加法 设是两个矩阵,则 矩阵称为矩阵A 2.矩阵的数乘 设是矩阵,是一个常数,则矩阵称为...

  • 2018-10-16 矩阵学习

    矩阵:矩阵块 矩阵的等价转化: 行阶梯形矩阵、行最简形矩阵、标准型矩阵: 初等矩阵: 超重要的推理:image.p...

  • 【生物信息】感知矩阵与概率矩阵判定功能位点

    SenseMatrix 用核苷酸感知矩阵(加权矩阵)与概率矩阵判定功能位点 感知矩阵 感知矩阵(或加权矩阵)通过训...

网友评论

      本文标题:LeetCode-01矩阵

      本文链接:https://www.haomeiwen.com/subject/ctpevhtx.html