數組配對

問題: 給定N個整數,N爲偶數,是否能找到N/2對,使得每對和能被K整除。注意:每個元素只能出現在一個配對中。

思路: 創建一個長度爲K的數組,將整數的個數按照餘數分類存儲到數組中,分析餘數情況。

boolean checkPairable(int[] nums,int k){
        if(k<0)
            return false;
        int[] counts=new int[k];
        for(int num:nums){
            counts[num%k]++;
        }
        if(counts[0]%2!=0)
            return false;
        if(k%2==0){
            if(counts[k/2]%2!=0)
                return false;
        }
        for(int i=1;i<k/2;i++)
        {
            if(counts[i]!=counts[k-i])
                return false;
        }
        return true;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章