Maximum Non Negative Product in a Matrix LeetCode solution in JavaScript

1
var maxProductPath = function (grid) {
2
const R = grid.length,
3
C = grid[0].length;
4
if (R === 0 || C === 0) return -1;
5

6
const mat = [...Array(R)].map(() => [...Array(C)].map(() => new Array(2)));
7

8
mat[0][0] = [grid[0][0], grid[0][0]];
9
for (let i = 1; i < R; i++)
10
mat[i][0] = [mat[i - 1][0][0] * grid[i][0], mat[i - 1][0][1] * grid[i][0]];
11

12
for (let i = 1; i < C; i++)
13
mat[0][i] = [mat[0][i - 1][0] * grid[0][i], mat[0][i - 1][1] * grid[0][i]];
14

15
for (let i = 1; i < R; i++) {
16
for (let j = 1; j < C; j++) {
17
const max = Math.max(mat[i - 1][j][0], mat[i][j - 1][0]),
18
min = Math.min(mat[i - 1][j][1], mat[i][j - 1][1]);
19
if (grid[i][j] >= 0) mat[i][j] = [max * grid[i][j], min * grid[i][j]];
20
else mat[i][j] = [min * grid[i][j], max * grid[i][j]];
21
}
22
}
23

24
return mat[R - 1][C - 1][0] >= 0 ? mat[R - 1][C - 1][0] % (10 ** 9 + 7) : -1;
25
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0