Skip to content

Commit 8d9c1fe

Browse files
Create array_of_doubled_pairs.cpp
1 parent 181be92 commit 8d9c1fe

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

array_of_doubled_pairs.cpp

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
class Solution {
2+
public:
3+
bool canReorderDoubled(vector<int>& arr) {
4+
if(arr.size() == 0) return true;
5+
6+
unordered_map<int, int> ump; //element to count
7+
sort(arr.begin(), arr.end());
8+
9+
for(auto element : arr) {
10+
ump[element]++;
11+
}
12+
13+
for(auto element: arr) {
14+
if (ump[element] == 0) {
15+
continue;
16+
}
17+
if (element < 0 && element % 2 != 0) { //for -ve values, there is no element/2 pair to match
18+
return false;
19+
}
20+
int pair = element > 0 ? element*2 : element/2; //positive or negative
21+
if (ump[pair] == 0) { //no match with element
22+
return false;
23+
}
24+
ump[element]--;
25+
ump[pair]--;
26+
}
27+
return true;
28+
}
29+
};

0 commit comments

Comments
 (0)