LeetCode 1091. 二进制矩阵中的最短路径(BFS)
1. 题目
在一个 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 。提示:
1 <= grid.length == grid[0].length <= 100
grid[i][j] 为 0 或 1
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/shortest-path-in-binary-matrix
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 解题
- 8个方向可走,题目意思是路径上点的个数,step初始为1
class Solution {public:int shortestPathBinaryMatrix(vector<vector<int>>& grid) {int m = grid.size(), n = grid[0].size(), i, j, x, y, k, step = 1, size;if(grid[0][0]==1 || grid[m-1][n-1]==1)return -1;vector<vector<int>> dir = {{1,0},{0,1},{0,-1},{-1,0},{1,1},{-1,-1},{1,-1},{-1,1}};queue<vector<int>> q;q.push({0,0});//坐标x,ygrid[0][0] = 1;//访问过while(!q.empty()){size = q.size();while(size--){i = q.front()[0];j = q.front()[1];if(i==m-1 && j==n-1)return step;q.pop();for(k = 0; k < 8; ++k){x = i + dir[k][0];y = j + dir[k][1];if(x>=0 && x<m && y>=0 && y<n && grid[x][y]==0){q.push({x,y});grid[x][y] = 1;//访问过了}}}step++;}return -1;}
};
208 ms 27.1 MB
LeetCode 1091. 二进制矩阵中的最短路径(BFS)相关推荐
- LeetCode 1091 二进制矩阵中的最短路径问题[BFS 队列] HERODING的LeetCode之路
解题思路: 使用广度优先遍历的方法,可以遍历下一步能走的位置,一般用到广度优先就离不开队列,队列存储着当前轮次能够走的位置,每一轮都要将能走的长度++,如果队列无元素,说明无处可走,此时没有到终点就直 ...
- leetcode -- 1091. 二进制矩阵中的最短路径
在一个 N × N 的方形网格中,每个单元格有两种状态:空(0)或者阻塞(1). 一条从左上角到右下角.长度为 k 的畅通路径,由满足下述条件的单元格 C_1, C_2, ..., C_k 组成: 相 ...
- LeetCode #1091 二进制矩阵中的最短路径
题目描述 在一个 N × N 的方形网格中,每个单元格有两种状态:空(0)或者阻塞(1). 一条从左上角到右下角.长度为 k 的畅通路径,由满足下述条件的单元格 C_1, C_2, ..., C_k ...
- C++算法学习(力扣:1091. 二进制矩阵中的最短路径)
在一个 N × N 的方形网格中,每个单元格有两种状态:空(0)或者阻塞(1). 一条从左上角到右下角.长度为 k 的畅通路径,由满足下述条件的单元格 C_1, C_2, -, C_k 组成: 相邻单 ...
- Leetcode1091_二进制矩阵中的最短路径(Java+BFS解法)
Leetcode1091题:二进制矩阵中的最短路径(Java+BFS解法) 文章目录 Leetcode1091题:二进制矩阵中的最短路径(Java+BFS解法) 1.题目链接 2.解题思想 3.Jav ...
- leetcode1091. 二进制矩阵中的最短路径(bfs)
在一个 N × N 的方形网格中,每个单元格有两种状态:空(0)或者阻塞(1).一条从左上角到右下角.长度为 k 的畅通路径,由满足下述条件的单元格 C_1, C_2, ..., C_k 组成:相邻单 ...
- `Algorithm-Solution` `LeetCode` 6305. 二进制矩阵中翻转最多一次使路径不连通
Link Solution Simplified: + If there are two paths s→a1→a2...→ts \to a1 \to a2 ... \to ts→a1→a2...→t ...
- LeetCode 378. 有序矩阵中第K小的元素(二分查找)
文章目录 1. 题目 2. 解题 2.1 暴力法 2.2 二分查找 1. 题目 给定一个 n x n 矩阵,其中每行和每列元素均按升序排序,找到矩阵中第k小的元素. 请注意,它是排序后的第k小元素,而 ...
- LeetCode题解:矩阵中战斗力最弱的 K 行
矩阵中战斗力最弱的 K 行 一.题目 给你一个大小为 m * n 的矩阵 mat,矩阵由若干军人和平民组成,分别用 1 和 0 表示. 请你返回矩阵中战斗力最弱的 k 行的索引,按从最弱到最强排序. ...
最新文章
- bootcmd 和 bootargs 环境变量
- 经典C语言程序100例之二二
- RHCE 学习笔记(16) - KickStart
- vue中使用FullCalendar日历组件
- 鸿蒙公测第二期报名地址,鸿蒙2.0第二期公测报名入口及参加方法
- 莫比乌斯函数与莫比乌斯反演
- Vmware中RedHat命令行和图形界面切换
- DC概论三之setup time 与 hold time 之二
- 关于jmeter TPS解读
- 2007年度中文博客百条经典语录
- web技术分享| 前端秘籍之“易容”术
- 类,多态,抽象类,接口
- 第五人格显示服务器维护中请稍后登录怎么办,第五人格账号登录失败怎么办
- 年终奖变期权,曝字节跳动将开启员工期权兑换
- 中国现在开源系统cms 论坛排行榜
- 企业非法集资风险预测
- MailKit和MimeKit 收发邮件
- 根据经纬度,随机生成经纬度
- TiDB Lightning 常见问题
- matlab实现MSK调制解调
热门文章
- pycharm之no python interpreter configured for project的解决办法
- 机器学习中各类算法的优缺点比较
- C语言扫地雷游戏的题目简介,C语言程序设计课程设计(论文)-扫地雷游戏.doc...
- Django Model设计详解
- kail中tools的安装和第一个php学习笔记
- 字符数组,字符串、数字转化
- grpc php 返回值过大,使用grpc实现php、java、go三方互调
- matlab里数组的赋值,arrays – MATLAB结构赋值数组
- LeetCode371——Sum of Two Integers(不用+)
- centOS 6 和centOS 7 防火墙指令