代码随想录刷题Day8

43 阅读1分钟

哈希表

  1. 454. 四数相加 II
  • 分组+哈希

1、num1+num2分为一组,计算元素之和a以及和出现的次数存入map

2、num3+num4分为一组,计算元素之和b,因为最终和等于0,所以只需判断map中是否存在-b即可,存在则获取key为-b时的value值即次数并叠加。

class Solution {
    public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {
        Map<Integer, Integer> map=new HashMap<>();
        for(int i:nums1){
            for(int j:nums2){
                if(map.containsKey(i+j)){
                    map.compute(i+j, (key, value) -> value + 1);
                }else{
                    map.put(i+j,1);
                }
            }
        }
        int res=0;
        for(int i:nums3){
            for(int j:nums4){
                if(map.containsKey(-i-j))
                res+=map.get(-i-j);
            }
        }
        return res;
    }
}