题目:原题链接(中等)
标签:广度优先搜索
| 解法 | 时间复杂度 | 空间复杂度 | 执行用时 | 
| Ans 1 (Python) | O ( N ) | O ( N ) | 108ms (100.00%) | 
| Ans 2 (Python) | |||
| Ans 3 (Python) | 
解法一:
class Solution:
    def snakesAndLadders(self, board: List[List[int]]) -> int:
        m, n = len(board), len(board[0])
        # 将蛇形棋转换为列表
        lst = [0]
        reverse = False
        for i in range(m - 1, -1, -1):
            if not reverse:
                lst.extend(board[i])
            else:
                lst.extend(reversed(board[i]))
            reverse = not reverse
        # 广度优先搜索
        step = 0
        visited = {1: 0}
        queue = collections.deque([1])
        while queue:
            step += 1
            for _ in range(len(queue)):
                n1 = queue.popleft()
                for n2 in range(n1 + 1, n1 + 7):
                    if n2 == m * n:
                        return step
                    if lst[n2] != -1:
                        n2 = lst[n2]
                    if n2 == m * n:
                        return step
                    if n2 not in visited or visited[n2] > step:
                        visited[n2] = step
                        queue.append(n2)
        return -1









