合肥网站快速排名提升,物联网专业,专业团队图片张伟,seo编辑的工作内容1. 题目
在一个 N N 的方形网格中#xff0c;每个单元格有两种状态#xff1a;空#xff08;0#xff09;或者阻塞#xff08;1#xff09;。
一条从左上角到右下角、长度为 k 的畅通路径#xff0c;
由满足下述条件的单元格 C_1, C_2, ..., C_k 组成#xff1a;相邻…1. 题目
在一个 N × N 的方形网格中每个单元格有两种状态空0或者阻塞1。
一条从左上角到右下角、长度为 k 的畅通路径
由满足下述条件的单元格 C_1, C_2, ..., C_k 组成相邻单元格 C_i 和 C_{i1} 在八个方向之一上连通
此时C_i 和 C_{i1} 不同且共享边或角
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(vectorvectorint 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;vectorvectorint dir {{1,0},{0,1},{0,-1},{-1,0},{1,1},{-1,-1},{1,-1},{-1,1}};queuevectorint 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(im-1 jn-1)return step;q.pop();for(k 0; k 8; k){x i dir[k][0];y j dir[k][1];if(x0 xm y0 yn grid[x][y]0){q.push({x,y});grid[x][y] 1;//访问过了}}}step;}return -1;}
};208 ms 27.1 MB