Cut Off Trees for Golf Event LeetCode solution in Python

1
from collections import deque
2

3

4
class Solution:
5
def cutOffTree(self, forest: List[List[int]]) -> int:
6
a = []
7
n = len(forest)
8
m = len(forest[0])
9
for i in range(n):
10
for j in range(m):
11
if forest[i][j] > 1:
12
a.append(forest[i][j])
13
a.sort()
14

15
s = 0
16
ux = 0
17
uy = 0
18
for h in a:
19
dist = [[None] * m for i in range(n)]
20
q = deque()
21
q.append((ux, uy))
22
dist[ux][uy] = 0
23
while q:
24
ux, uy = q.popleft()
25
if forest[ux][uy] == h:
26
break
27
d = [(-1, 0), (0, 1), (1, 0), (0, -1)]
28
for dx, dy in d:
29
vx = ux + dx
30
vy = uy + dy
31
if vx < 0 or vx >= n or vy < 0 or vy >= m:
32
continue
33
if forest[vx][vy] == 0:
34
continue
35
if dist[vx][vy] is None:
36
q.append((vx, vy))
37
dist[vx][vy] = dist[ux][uy] + 1
38
if forest[ux][uy] == h:
39
s += dist[ux][uy]
40
else:
41
return -1
42
return s

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0