Magic Squares In Grid LeetCode solution in Python

1
class Solution:
2

3
digits = {1, 2, 3, 4, 5, 6, 7, 8, 9}
4

5
@classmethod
6
def magic_3_3(cls, square: List[List[int]]) -> bool:
7
if set(sum(square, [])) != Solution.digits:
8
return False
9
sum_row0 = sum(square[0])
10
for r in range(1, 3):
11
if sum(square[r]) != sum_row0:
12
return False
13
if any(sum(col) != sum_row0 for col in zip(*square)):
14
return False
15
sum_main_diagonal = sum_second_diagonal = 0
16
for i in range(3):
17
sum_main_diagonal += square[i][i]
18
sum_second_diagonal += square[i][2 - i]
19
return sum_main_diagonal == sum_second_diagonal == sum_row0
20

21
def numMagicSquaresInside(self, grid: List[List[int]]) -> int:
22
count = 0
23
rows, cols = len(grid), len(grid[0])
24
for r in range(rows - 2):
25
for c in range(cols - 2):
26
if Solution.magic_3_3(
27
[grid[row_idx][c : c + 3] for row_idx in range(r, r + 3)]
28
):
29
count += 1
30
return count

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0