Leetcode#909. Snakes and Ladders
Problem
You are given an n x n
integer matrix board
where the cells are labeled from 1
to n^2
in a Boustrophedon style starting from the bottom left of the board (i.e. board[n - 1][0]
) and alternating direction each row.
You start on square 1
of the board. In each move, starting from square curr
, do the following:
- Choose a destination square
next
with a label in the range[curr + 1, min(curr + 6, n^2)]
.- This choice simulates the result of a standard 6-sided die roll: i.e., there are always at most 6 destinations, regardless of the size of the board.
- If
next
has a snake or ladder, you must move to the destination of that snake or ladder. Otherwise, you move tonext
. - The game ends when you reach the square
n^2
.
A board square on row r
and column c
has a snake or ladder if board[r][c] != -1
. The destination of that snake or ladder is board[r][c]
. Squares 1
and n2
do not have a snake or ladder.
Note that you only take a snake or ladder at most once per move. If the destination to a snake or ladder is the start of another snake or ladder, you do not follow the subsequent snake or ladder.
- For example, suppose the board is
[[-1,4],[-1,3]]
, and on the first move, your destination square is2
. You follow the ladder to square3
, but do not follow the subsequent ladder to4
.
Return the least number of moves required to reach the square n^2
. If it is not possible to reach the square, return -1
.
Example 1:
!https://assets.leetcode.com/uploads/2018/09/23/snakes.png
1 | Input: board = [[-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1],[-1,35,-1,-1,13,-1],[-1,-1,-1,-1,-1,-1],[-1,15,-1,-1,-1,-1]] |
Example 2:
1 | Input: board = [[-1,-1],[-1,3]] |
Constraints:
n == board.length == board[i].length
2 <= n <= 20
board[i][j]
is either1
or in the range[1, n^2]
.- The squares labeled
1
andn^2
do not have any ladders or snakes.
Solve
用queue實作 bfs
1 | class Solution: |