给你一个整数数组 arr 和一个整数 k ,其中数组长度是偶数,值为 n 。
现在需要把数组恰好分成 n / 2 对,以使每对数字的和都能够被 k 整除。
如果存在这样的分法,请返回 True ;否则,返回 False 。
示例 1:
输入:arr = [1,2,3,4,5,10,6,7,8,9], k = 5
输出:true
解释:划分后的数字对为 (1,9),(2,8),(3,7),(4,6) 以及 (5,10) 。
代码
class Solution {public boolean canArrange(int[] arr, int k) {int n=arr.length;int[] temp=new int[k];for(int c:arr)temp[(c%k+k)%k]++;//计算余数for(int i=1;i<=k/2;i++)if(temp[i]!=temp[k-i]) return false;//对应的余数不相等return temp[0]%2==0;//整除k的需要偶数才能配对}
}