Closest Subsequence Sum LeetCode solution in JavaScript

1
var minAbsDifference = function (nums, goal) {
2
let mid = Math.floor(nums.length / 2);
3
let part1 = nums.slice(0, mid),
4
part2 = nums.slice(mid);
5

6
function findSubsetSums(arr, set, idx = 0, sum = 0) {
7
if (idx === arr.length) return set.add(sum);
8
findSubsetSums(arr, set, idx + 1, sum);
9
findSubsetSums(arr, set, idx + 1, sum + arr[idx]);
10
}
11

12
let sum1 = new Set(),
13
sum2 = new Set();
14
findSubsetSums(part1, sum1);
15
findSubsetSums(part2, sum2);
16

17
sum1 = [...sum1.values()];
18
sum2 = [...sum2.values()];
19
sum2.sort((a, b) => a - b);
20

21
let min = Infinity;
22
for (let num1 of sum1) {
23
let l = 0,
24
r = sum2.length - 1;
25
while (l <= r) {
26
let mid = l + Math.floor((r - l) / 2);
27
let num2 = sum2[mid];
28
min = Math.min(min, Math.abs(num1 + num2 - goal));
29
if (num1 + num2 < goal) l = mid + 1;
30
else r = mid - 1;
31
}
32
}
33
return min;
34
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0