给你一个整数数组 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的需要偶数才能配对
}
}