Problem
There is a ball in a maze with empty spaces (represented as 0) and walls (represented as 1). The ball can go through the empty spaces by rolling up, down, left or right, but it won’t stop rolling until hitting a wall. When the ball stops, it could choose the next direction.
Given the m x n maze, the ball’s start position and the destination, where start = [startrow, startcol] and destination = [destinationrow, destinationcol], return true if the ball can stop at the destination, otherwise return false.
You may assume that the borders of the maze are all walls (see examples).
Example 1:

1 | Input: maze = [[0,0,1,0,0],[0,0,0,0,0],[0,0,0,1,0],[1,1,0,1,1],[0,0,0,0,0]], start = [0,4], destination = [4,4] |
Example 2:

1 | Input: maze = [[0,0,1,0,0],[0,0,0,0,0],[0,0,0,1,0],[1,1,0,1,1],[0,0,0,0,0]], start = [0,4], destination = [3,2] |
Example 3:
1 | Input: maze = [[0,0,0,0,0],[1,1,0,0,1],[0,0,0,0,0],[0,1,0,0,1],[0,1,0,0,0]], start = [4,3], destination = [0,1] |
Constraints:
m == maze.lengthn == maze[i].length1 <= m, n <= 100maze[i][j]is0or1.start.length == 2destination.length == 20 <= startrow, destinationrow <= m0 <= startcol, destinationcol <= n- Both the ball and the destination exist in an empty space, and they will not be in the same position initially.
- The maze contains at least 2 empty spaces.
Analysis
这道题目给出一个迷宫,足球作为起点,球门作为终点,每次球可以向周围四个方向移动一格,问球最终能否到达球门的位置。这其实就是一道非常经典的二维矩阵BFS问题,每次把当前位置的邻居都放入到队列中,放入前判断合法性,最终如果能找到则返回true,如果一直都找不到直到队列为空,则返回false。
Solution
无。
Code
1 | class Solution { |
Summary
这道题目是经典的常规BFS,是一道学习BFS遍历框架很好的题目。这道题目的分享到这里,感谢你的支持!