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