Leetcode 2117 Solution

This article provides solution to leetcode question 2117 (find-original-array-from-doubled-array)

https://leetcode.com/problems/find-original-array-from-doubled-array

Solution

class Solution { public: vector<int> findOriginalArray(vector<int>& changed) { vector<int> ans;
if (changed.size() % 2 == 1) return ans;
map<int, int> m; for (auto it = changed.begin(); it != changed.end(); it++) m[*it]++;
while (!m.empty()) { auto it = m.begin(); int target = 2 * it->first;
ans.push_back(it->first); it->second -= 1; if (it->second == 0) m.erase(it);
if (m.find(target) == m.end()) return vector<int>();
m[target] -= 1; if (m[target] == 0) m.erase(target); }
return ans; } };