Minimize the Difference Between Target and Chosen Elements LeetCode solution in JavaScript

1
var minimizeTheDifference = function (mat, target) {
2
const MAX = Number.MAX_SAFE_INTEGER;
3

4
const m = mat.length;
5
const n = mat[0].length;
6

7
const memo = [];
8

9
for (let i = 0; i < m; ++i) {
10
memo[i] = new Array(4901).fill(MAX);
11
}
12

13
return topDown(0, 0);
14

15
function topDown(row, sum) {
16
if (row === m) return Math.abs(target - sum);
17
if (memo[row][sum] != MAX) return memo[row][sum];
18

19
let min = MAX;
20

21
mat[row].sort((a, b) => a - b);
22

23
const set = new Set(mat[row]);
24

25
for (const num of set) {
26
const res = topDown(row + 1, sum + num);
27

28
if (res > min) break;
29
min = res;
30
}
31

32
memo[row][sum] = min;
33

34
return min;
35
}
36
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0