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);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]);14
findSubsetSums(part1, sum1);15
findSubsetSums(part2, sum2);17
sum1 = [...sum1.values()];18
sum2 = [...sum2.values()];19
sum2.sort((a, b) => a - b);22
for (let num1 of sum1) {26
let mid = l + Math.floor((r - l) / 2);28
min = Math.min(min, Math.abs(num1 + num2 - goal));29
if (num1 + num2 < goal) l = mid + 1;