Leetcode 深度优先搜索 (13)
505. 迷宫 II
迷宫中有一个球,它有空地 (表示为 0) 和墙 (表示为 1)。球可以向上、向下、向左或向右滚过空地,但直到撞上墙之前它都不会停止滚动。当球停止时,它才可以选择下一个滚动方向。
给定 m×nm × nm×n 的迷宫(maze),球的起始位置 (start = [startrow, startcol]) 和目的地 (destination = [destinationrow, destinationcol]),返回球在目的地 (destination) 停止的最短距离。如果球不能在目的地 (destination) 停止,返回 -1。
距离是指球从起始位置 ( 不包括 ) 到终点 ( 包括 ) 所经过的空地数。
你可以假设迷宫的边界都是墙 ( 见例子 )。
示例 1:
输入: 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]
输出: 12
解析: 一条最短路径 : left -> down -> left -> down -> right -> down -> right。
总距离为 1 + 1 + 3 + 1 + 2 + 2 + 2 = 12。