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;
}
};

这篇博客介绍了一种利用哈希表解决LeetCode上的数组配对整除问题的方法。给定一个偶数长度的整数数组arr和整数k,需要判断是否能将数组分成n/2对,使得每对数字之和能被k整除。通过哈希表记录每个余数值出现的次数,然后检查和k减去当前余数值的配对是否存在,最终确定是否存在符合条件的分法。
437

被折叠的 条评论
为什么被折叠?



