# 1497. Check If Array Pairs Are Divisible by k

Medium
Given an array of integers `arr` of even length `n` and an integer `k`.
We want to divide the array into exactly `n / 2` pairs such that the sum of each pair is divisible by `k`.
Return `true` If you can find a way to do that or `false` otherwise.
Example 1:
Input: arr = [1,2,3,4,5,10,6,7,8,9], k = 5
Output:
true
Explanation:
Pairs are (1,9),(2,8),(3,7),(4,6) and (5,10).
Example 2:
Input: arr = [1,2,3,4,5,6], k = 7
Output:
true
Explanation:
Pairs are (1,6),(2,5) and(3,4).
Example 3:
Input: arr = [1,2,3,4,5,6], k = 10
Output:
false
Explanation:
You can try all possible pairs to see that there is no way to divide arr into 3 pairs each with sum divisible by 10.
Constraints:
• `arr.length == n`
• `1 <= n <= 105`
• `n` is even.
• `-109 <= arr[i] <= 109`
• `1 <= k <= 105`

### 解題

1 % 5 = 1
2 % 5 = 2
3 % 5 = 3
4 % 5 = 4
5 % 5 = 0
6 % 5 = 1
7 % 5 = 2
8 % 5 = 3
9 % 5 = 4
10 % 5 = 0

Runtime: 109 ms, faster than 90.16%
Memory Usage: 9 MB, less than 91.80%
func canArrange(arr []int, k int) bool {
count := make([]int, k)
for _, val := range arr {
n := val % k
if n<0 { n +=k }
count[n]++
}
for _, val := range arr {
rem1 := val % k
if rem1<0 { rem1+=k }
if rem1==0 {
if count[0]%2 !=0 { return false }
} else {
rem2 := k-rem1
if count[rem1] != count[rem2] { return false }
}
}
return true
}