The Maze - 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 to roll. 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.
Input & Output
Example 1 — Path Exists
$
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]
›
Output:
true
💡 Note:
Ball starts at (0,4), rolls down to (4,4), then rolls right to reach destination (4,4)
Example 2 — No Path
$
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]
›
Output:
false
💡 Note:
Ball cannot stop at (3,2) because it's blocked by walls and there's no path that allows stopping there
Example 3 — Start Equals Destination
$
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 = [0,0], destination = [0,0]
›
Output:
true
💡 Note:
Ball is already at destination, so return true immediately
Constraints
- m == maze.length
- n == maze[i].length
- 1 ≤ m, n ≤ 100
- maze[i][j] is 0 or 1
- start.length == 2
- destination.length == 2
- 0 ≤ startrow, destinationrow < m
- 0 ≤ 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
Visualization
Tap to expand
Understanding the Visualization
1
Input
5x5 maze with start [0,4] and destination [4,4]
2
Process
Ball rolls in directions until hitting walls
3
Output
Return true if ball can stop at destination
Key Takeaway
🎯 Key Insight: The ball only stops when hitting a wall, making this a graph traversal problem between stopping positions
💡
Explanation
AI Ready
💡 Suggestion
Tab
to accept
Esc
to dismiss
// Output will appear here after running code