Find Array Given Subset Sums LeetCode solution in Java

1
class Solution {
2
public int[] recoverArray(int n, int[] sums) {
3
Arrays.sort(sums);
4
int m = sums.length;
5
int[] res = new int[n], left = new int[m / 2], right = new int[m / 2];
6
for (int i = 0; i < n; ++i) {
7
int diff = sums[1] - sums[0], hasZero = 0, p = -1, q = -1, k = 0;
8
for (int j = 0; j < m; ++j) {
9
if (k <= q && right[k] == sums[j]) k++;
10
else {
11
if (0 == sums[j]) hasZero = 1;
12
left[++p] = sums[j];
13
right[++q] = sums[j] + diff;
14
}
15
}
16
if (1 == hasZero) {
17
res[i] = diff;
18
sums = left;
19
} else {
20
res[i] = -diff;
21
sums = right;
22
}
23
m /= 2;
24
}
25
return res;
26
}
27
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0