Largest Plus Sign LeetCode solution in Python

1
class Solution:
2

3
def orderOfLargestPlusSign(self, n: int, mines: list[list[int]]) -> int:
4
matrix = [1] * n
5
aux = {}
6
hasOne = False
7
for i in range(0, n):
8
matrix[i] = [1] * n
9
for mine in mines:
10
matrix[mine[0]][mine[1]] = 0
11
for i in range(0, n):
12
for j in range(0, n):
13
if matrix[i][j] == 1:
14
hasOne = True
15
if (i, j) not in aux:
16
aux[(i, j)] = {"t": 0, "l": 0, "r": 0, "b": 0}
17
if j > 0 and matrix[i][j] == 1 and matrix[i][j - 1] == 1:
18
aux[(i, j)]["l"] = aux[(i, j - 1)]["l"] + 1
19
if i > 0 and matrix[i][j] == 1 and matrix[i - 1][j] == 1:
20
aux[(i, j)]["t"] = aux[(i - 1, j)]["t"] + 1
21

22
maxOrder = 0
23
for i in range(n - 1, -1, -1):
24
if i < maxOrder:
25
break
26
for j in range(n - 1, -1, -1):
27
if j < maxOrder:
28
break
29
if j < n - 1 and matrix[i][j] == 1 and matrix[i][j + 1] == 1:
30
aux[(i, j)]["r"] = aux[(i, j + 1)]["r"] + 1
31
if i < n - 1 and matrix[i][j] == 1 and matrix[i + 1][j]:
32
aux[(i, j)]["b"] = aux[(i + 1, j)]["b"] + 1
33
maxOrder = max(
34
min(
35
aux[(i, j)]["b"],
36
aux[(i, j)]["t"],
37
aux[(i, j)]["r"],
38
aux[(i, j)]["l"],
39
),
40
maxOrder,
41
)
42

43
print(maxOrder + 1)
44
return maxOrder + 1

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0