代码拉取完成,页面将自动刷新
# Time: O(max(r, c) * w)
# Space: O(w)
import collections
class Solution(object):
def hasPath(self, maze, start, destination):
"""
:type maze: List[List[int]]
:type start: List[int]
:type destination: List[int]
:rtype: bool
"""
def neighbors(maze, node):
for i, j in [(-1, 0), (0, 1), (0, -1), (1, 0)]:
x, y = node
while 0 <= x + i < len(maze) and \
0 <= y + j < len(maze[0]) and \
not maze[x+i][y+j]:
x += i
y += j
yield x, y
start, destination = tuple(start), tuple(destination)
queue = collections.deque([start])
visited = set()
while queue:
node = queue.popleft()
if node in visited: continue
if node == destination:
return True
visited.add(node)
for neighbor in neighbors(maze, node):
queue.append(neighbor)
return False
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。