https://leetcode-cn.com/problems/check-if-array-pairs-are-divisible-by-k/
题意:
给你一个整数数组 arr 和一个整数 k ,其中数组长度是偶数,值为 n 。
现在需要把数组恰好分成 n / 2 对,以使每对数字的和都能够被 k 整除。
如果存在这样的分法,请返回 True ;否则,返回 False 。
方法:哈希表
class Solution {
public:
bool canArrange(vector<int>& arr, int k) {
unordered_map<int,int> mp;
for(auto& a:arr)
{
if(a%k<0) mp[a%k+k]++;
else mp[a%k]++;
}
if(mp[0]%2!=0) return false;
for(auto iter=mp.begin();iter!=mp.end();iter++)
{
if(iter->first==0) continue;
while(iter->second!=0)
{
if(mp.count(k-iter->first)>0)
{
if(mp[k-iter->first]<=0) return false;
else mp[k-iter->first]--;
}
else
{
return false;
}
(iter->second)--;
}
}
return true;
}
};