1497. Check If Array Pairs Are Divisible by k
Solution
將number用餘數的方式保存,已知:
a%k = a' b%k = b' a' + b' == k -> (a+b)%k == 0 所以對每個餘數i而言,只要計算對應的pair (k-i)數量是否一致就行
public boolean canArrange(int[] arr, int k) {
int n = arr.length;
int[] freq = new int[k];
for(int num : arr){
int i = num%k;
if(i < 0){
i += k;
}
freq[i]++;
}
if(freq[0]%2 != 0) return false;
for(int i = 1; i < k/2; i++){
if(freq[i] != freq[k-i]) return false;
}
if( k % 2 == 0) return freq[k/2]%2 == 0;
return true;
}
Previous1423. Maximum Points You Can Obtain from CardsNext1438. Longest Continuous Subarray With Absolute Diff Less Than or Equal to Limit
Last updated
Was this helpful?