程序查找到达Python右下角所需的最小单元数
假设我们有一个表示迷宫的2D网格,其中0表示空白,1表示墙。我们将从grid[0,0]开始,我们必须找到到达网格右下角所需的最小平方数。如果我们无法到达,则返回-1。
所以,如果输入像
那么输出将是5
为了解决这个问题,我们将遵循以下步骤-
R:=网格的行数,C:=网格的列数
q:=[0,0,1],当A[0,0]为1时,否则为新列表
A[0,0]:=1
对于q中的每个(r,c,d),执行
对于[[r+1,c),(r−1,c),(r,c+1),(r,c−1)]中的每个[x,y]
A[x,y]:=1
在q的末尾插入(x,y,d+1)
如果x在0到R的范围内,y在0到C的范围内,并且A[x,y]等于0,则
返回d
如果(r,c)与(R−1,C−1)相同,则
返回-1
让我们看下面的实现以更好地理解-
示例
class Solution:
def solve(self, A):
R, C = len(A), len(A[0])
q = [(0, 0, 1)] if not A[0][0] else []
A[0][0] = 1
for r, c, d in q:
if (r, c) == (R − 1, C − 1):
return d
for x, y in [(r + 1, c), (r − 1, c), (r, c + 1), (r, c −1)]:
if 0 <= x < R and 0 <= y < C and A[x][y] == 0:
A[x][y] = 1
q.append((x, y, d + 1))
return −1
ob = Solution()grid = [
[0, 0, 0],
[1, 0, 0],
[1, 0, 0]
]
print(ob.solve(grid))输入值
grid = [ [0, 0, 0], [1, 0, 0], [1, 0, 0] ]
输出结果
5