Largest Magic Square LeetCode solution in JavaScript

1
var largestMagicSquare = function (grid) {
2
const row = grid.length;
3
const col = grid[0].length;
4
const startSize = row <= col ? row : col;
5
for (let s = startSize; s > 1; s--) {
6
for (let r = 0; r < grid.length - s + 1; r++) {
7
for (let c = 0; c < grid[0].length - s + 1; c++) {
8
if (isMagic(grid, r, c, s)) {
9
return s;
10
}
11
}
12
}
13
}
14
return 1;
15
};
16

17
const isMagic = (grid, i, j, size) => {
18
let targetSum = 0;
19
for (let c = j; c < j + size; c++) {
20
targetSum += grid[i][c];
21
}
22
//check rows
23
for (let r = i; r < i + size; r++) {
24
let sum = 0;
25
for (let c = j; c < j + size; c++) {
26
sum += grid[r][c];
27
}
28
if (targetSum !== sum) {
29
return false;
30
}
31
}
32
//check cols
33
for (let c = j; c < j + size; c++) {
34
let sum = 0;
35
for (let r = i; r < i + size; r++) {
36
sum += grid[r][c];
37
}
38
if (targetSum !== sum) {
39
return false;
40
}
41
}
42
//check diagonals
43
let diagSum = 0,
44
antiDiagSum = 0;
45
for (let c = 0; c < size; c++) {
46
diagSum += grid[i + c][j + c];
47
antiDiagSum += grid[i + c][j + size - 1 - c];
48
}
49
if (diagSum !== antiDiagSum || diagSum !== targetSum) {
50
return false;
51
}
52
return true;
53
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0