File tree 1 file changed +20
-19
lines changed
scripts/algorithms/F/Find Array Given Subset Sums
1 file changed +20
-19
lines changed Original file line number Diff line number Diff line change
1
+ // Runtime: 694 ms (Top 46.21%) | Memory: 141.7 MB (Top 30.30%)
1
2
class Solution {
2
3
public:
3
4
vector<int > recoverArray (int n, vector<int >& sums) {
4
- sort (sums.begin (), sums.end ());
5
-
6
- vector<int > ans;
5
+ sort (sums.begin (), sums.end ());
6
+
7
+ vector<int > ans;
7
8
while (n--) {
8
- int diff = sums[1 ] - sums[0 ];
9
- unordered_map<int , int > freq;
10
- vector<int > ss0, ss1;
11
- bool on = false ;
12
- for (auto & x : sums)
9
+ int diff = sums[1 ] - sums[0 ];
10
+ unordered_map<int , int > freq;
11
+ vector<int > ss0, ss1;
12
+ bool on = false ;
13
+ for (auto & x : sums)
13
14
if (!freq[x]) {
14
- ss0.push_back (x);
15
- freq[x+diff]++;
16
- if (x == 0 ) on = true ;
15
+ ss0.push_back (x);
16
+ freq[x+diff]++;
17
+ if (x == 0 ) on = true ;
17
18
} else {
18
- ss1.push_back (x);
19
- freq[x]--;
19
+ ss1.push_back (x);
20
+ freq[x]--;
20
21
}
21
22
if (on) {
22
- ans.push_back (diff);
23
- sums = ss0;
23
+ ans.push_back (diff);
24
+ sums = ss0;
24
25
} else {
25
- ans.push_back (-diff);
26
- sums = ss1;
26
+ ans.push_back (-diff);
27
+ sums = ss1;
27
28
}
28
29
}
29
- return ans;
30
+ return ans;
30
31
}
31
- };
32
+ };
You can’t perform that action at this time.
0 commit comments