leetcode 1091矩阵BFS

在一个 N × N 的方形网格中,每个单元格有两种状态:空(0)或者阻塞(1)。

一条从左上角到右下角、长度为 k 的畅通路径,由满足下述条件的单元格 C_1, C_2, ..., C_k 组成:

相邻单元格 C_i 和 C_{i+1} 在八个方向之一上连通(此时,C_i 和 C_{i+1} 不同且共享边或角)

C_1 位于 (0, 0)(即,值为 grid[0][0])

C_k 位于 (N-1, N-1)(即,值为 grid[N-1][N-1])

如果 C_i 位于 (r, c),则 grid[r][c] 为空(即,grid[r][c] == 0)

返回这条从左上角到右下角的最短畅通路径的长度。如果不存在这样的路径,返回 -1 。

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/shortest-path-in-binary-matrix

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

class Solution {
private static int[][] dir = {{0, 1}, {0, -1}, {1, -1}, {1, 0}, {1, 1}, {-1, -1}, {-1, 0}, {-1, 1}};
private int m, n; public int shortestPathBinaryMatrix(int[][] grid) {
m = grid.length;
n = grid[0].length;
if (grid[0][0] == 1 || grid[m - 1][n - 1] == 1) return -1;
grid[0][0] = 1;
Queue<int[]> queue = new LinkedList<>();
queue.add(new int[]{0, 0});
while (!queue.isEmpty()) {
int[] tmp = queue.poll();
for (int[] d : dir) {
int x = tmp[0] + d[0];
int y = tmp[1] + d[1]; if (judge(x, y) && grid[x][y] == 0) {
queue.add(new int[]{x, y});
grid[x][y] = grid[tmp[0]][tmp[1]] + 1;
}
} }
return grid[m - 1][n - 1] == 0 ? -1 : grid[m - 1][n - 1]; // 如果最后终点的
} private boolean judge(int x, int y) {
return x >= 0 && x < m && y >= 0 && y < n;
}
}

矩阵BFS的更多相关文章

  1. [Swust OJ 1126]--神奇的矩阵(BFS,预处理,打表)

    题目链接:http://acm.swust.edu.cn/problem/1126/ Time limit(ms): 1000 Memory limit(kb): 65535 上一周里,患有XX症的哈 ...

  2. HDU-4255

    A Famous Grid Time Limit: 10000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  3. 邻结矩阵的建立和 BFS,DFS;;

    邻结矩阵比较简单,, 它的BFS,DFS, 两种遍历也比较简单,一个用队列, 一个用数组即可!!!但是邻接矩阵极其浪费空间,尤其是当它是一个稀疏矩阵的时候!!!-------------------- ...

  4. “盛大游戏杯”第15届上海大学程序设计联赛夏季赛暨上海高校金马五校赛题解&&源码【A,水,B,水,C,水,D,快速幂,E,优先队列,F,暴力,G,贪心+排序,H,STL乱搞,I,尼姆博弈,J,差分dp,K,二分+排序,L,矩阵快速幂,M,线段树区间更新+Lazy思想,N,超级快速幂+扩展欧里几德,O,BFS】

    黑白图像直方图 发布时间: 2017年7月9日 18:30   最后更新: 2017年7月10日 21:08   时间限制: 1000ms   内存限制: 128M 描述 在一个矩形的灰度图像上,每个 ...

  5. [BZOJ2252]矩阵距离(BFS)

    题意 输入矩阵m行n列(m<=500,n<=500),只含0.1,输出离每个元素距离最近的1的距离,其中距离定义为D(aij,akl)=abs(i-k)+abs(j-l). 示例: 输入: ...

  6. 2501 矩阵距离 (bfs)

    描述 给定一个N行M列的01矩阵 A,A[i][j] 与 A[k][l] 之间的曼哈顿距离定义为: dist(A[i][j],A[k][l])=|i-k|+|j-l| 输出一个N行M列的整数矩阵B,其 ...

  7. CF_576D_Flights for Regular Customers_矩阵乘法+倍增floyd+bitset+bfs

    CF_576D_Flights for Regular Customers_矩阵乘法+倍增floyd+bitset https://www.luogu.org/problemnew/show/CF57 ...

  8. AcWing:173. 矩阵距离(bfs)

    给定一个N行M列的01矩阵A,A[i][j] 与 A[k][l] 之间的曼哈顿距离定义为: dist(A[i][j],A[k][l])=|i−k|+|j−l|dist(A[i][j],A[k][l]) ...

  9. acwing 173. 矩阵距离(bfs)

    给定一个N行M列的01矩阵A,A[i][j] 与 A[k][l] 之间的曼哈顿距离定义为: dist(A[i][j],A[k][l])=|i−k|+|j−l|dist(A[i][j],A[k][l]) ...

随机推荐

  1. css问题记录

    1.flex:1元素被子元素撑开,将该元素overflow不为visible,构造BFC,或子元素脱离文档流

  2. 大数据学习(20)—— Zookeeper介绍

    ZooKeeper是什么 就像相声大师冯巩每次出场都说:"亲爱的观众朋友们,我想死你们啦"一样,我再强调一次,学习大数据官网很重要.Zookeeper官网看这里ZooKeeper ...

  3. QT: 如何移动和缩放一个无边框窗口

    一个QT窗口如下可以做到无边框: Window { id: window //Designer 竟然不支持..., 设计模式时要注意 flags: Qt.FramelessWindowHint wid ...

  4. 遥远的国度 (树链剖分换根),洛谷P3979

    析:显然,若没有换根操作,则为树链剖分板子题,但是这道题我们考虑换根操作 考虑这样一个性质:在一棵树上,两点的距离路径是唯一的!! 也就是说,我们在修改路径上的点权时,不必考虑根在哪里,直接利用模板修 ...

  5. 自学linux——10.Linux的网络知识

    linux的网络知识 一.网络相关概述 1.网络的分类 局域网(LAN):在几百米到十几公里内办公楼群或校园内的计算机相互连接所构成的计算机网络 城域网(MAN):覆盖相距不远的几栋办公楼,也可以覆盖 ...

  6. iTop安装 vm虚拟机、Linux、centos7安装itop 2.6.1

    itop安装流程,是我基于下面两位博主发布的文章整理出来的,欢迎大家学习,如有错误之处请大家留言指出我看到之后及时更新.谢谢 https://blog.csdn.net/qq_23565543/art ...

  7. Go interface 原理剖析--类型转换

    hi, 大家好,我是 haohognfan. 可能你看过的 interface 剖析的文章比较多了,这些文章基本都是从汇编角度分析类型转换或者动态转发.不过随着 Go 版本升级,对应的 Go 汇编也发 ...

  8. springboot上传文件路径存放

    @Beanpublic EmbeddedServletContainerCustomizer embeddedServletContainerCustomizer() { return (Config ...

  9. windows的基本命令和环境配置

    刚开始学的时候整理的基本知识 一.windows的基础知识: 1.常用的DOS命令 盘符切换: D: 回车 进入目录: cd xxx 回退目录 返回到上一级: cd ..  返回到根目录: cd / ...

  10. Shell-07-文本处理grep

    文本处理sed sed:流编辑器,过滤和替换文本 工作原理:sed命令将当前处理的行读入模式空间进行处理,处理完把结果输出,并且清空模式空间. 然后再将下一行读入模式空间进行处理输出,以此类推,直到最 ...