1497. Check If Array Pairs Are Divisible by k

Link

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;
    }

Last updated

Was this helpful?