链接:
https://leetcode-cn.com/problems/array-of-doubled-pairs/
描述和示例:
代码:
class Solution {
public:
bool canReorderDoubled(vector<int>& arr) {
unordered_map<int, int> h;//先用hash统计元素的个数
for (int x: arr)
++h[x];
vector<int> v;
v.reserve(h.size());
for (auto [x, _]: h)
v.push_back(x);
sort(v.begin(), v.end(), [](int a, int b){return abs(a) < abs(b);});//按照绝对值排序
for (int x: v)//删除里面的元素
if (h[x+x] < h[x])
return false;
else
h[x+x] -= h[x];
return true;
}
};