Leetcode:454. 4Sum II

参考:https://discuss.leetcode.com/topic/67658/simple-java-solution-with-explanation

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
/*
 * 思路:A+B的所有和放在map集合中,key:sum值,value:sum值的个数,然后再计算C+D的取负的和,
 * 看看有没有map的key中,如果在的话就说明就是一个解。
 * */
public class Sum42 {
    public int fourSumCount(int[] A, int[] B, int[] C, int[] D) {
        Map<Integer, Integer> map = new HashMap<Integer, Integer>();
        for (int i = 0; i < D.length; i++) {
            for (int j = 0; j < D.length; j++) {
                int sum = A[i]+B[j];
                if(map.containsKey(sum)){
                    map.put(sum, map.get(sum)+1);
                }else{
                    map.put(sum, 1);
                }
            }
        }
        int count=0;
        for (int i = 0; i < D.length; i++) {
            for (int j = 0; j < D.length; j++) {
                int sum = -(C[i]+D[j]);
                if(map.containsKey(sum)){
                    count = count+map.get(sum);
                }
            }
        }
        return count;
        
    }
}

 

posted on 2017-12-11 08:59  Michael2397  阅读(102)  评论(0编辑  收藏  举报

导航