454. 4Sum II

454. 4Sum II 

这道题让我五味杂陈(手动哭笑)。果然,求组合数和求具体的组合情况的思路还是很不一样的。

class Solution {
    public int fourSumCount(int[] A, int[] B, int[] C, int[] D) {

        // K: Sum, V: freq
        Map<Integer, Integer> map = new HashMap();
        
        int size = A.length;
        int sum;
        for(int i=0; i<size; i++) {
            for(int j=0; j<size; j++) {
                sum = A[i] + B[j];
                map.put(sum, map.getOrDefault(sum, 0) + 1);
            }
        }
        
        int count = 0;
        for(int i=0; i<size; i++) {
            for(int j=0; j<size; j++) {
                sum = C[i] + D[j];
                count += map.getOrDefault(-sum, 0);
            }
        }
        
        return count;
    }
}