Find Array Given Subset Sums LeetCode solution in JavaScript

1
/**
2
* @param {number} n
3
* @param {number[]} sums
4
* @return {number[]}
5
*/
6
var recoverArray = function (n, sums) {
7
sums.sort((a, b) => a - b);
8
let result = [];
9

10
while (sums.length > 1) {
11
let num = sums[sums.length - 1] - sums[sums.length - 2],
12
excluding = [],
13
including = [],
14
counter = new Map();
15
for (let item of sums) {
16
let count = counter.get(item);
17
if (count) {
18
counter.set(item, count + 1);
19
} else {
20
counter.set(item, 1);
21
}
22
}
23

24
for (let item of sums) {
25
if (counter.get(item) > 0) {
26
excluding.push(item);
27
including.push(item + num);
28
counter.set(item, counter.get(item) - 1);
29
counter.set(item + num, counter.get(item + num) - 1);
30
}
31
}
32

33
if (excluding.indexOf(0) !== -1) {
34
sums = excluding;
35
result.push(num);
36
} else {
37
sums = including;
38
result.push(-1 * num);
39
}
40
}
41

42
return result;
43
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0