leetcode1497. 检查数组对是否可以被 k 整除

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

上一篇:洛谷P1500


下一篇:14.LeetCode 三个数和