第454题.四数相加II

发布时间 2023-11-07 15:16:06作者: 追梦•少年

2023-11-07

454. 四数相加 II - 力扣(LeetCode)

1 暴力法  o(n4)时间复杂度太高,不行

2 哈希表法  22一组,key为 相加   value为达到这个值的次数  

  res+=value+value了

class Solution {
    Map<Integer,Integer> map1=new HashMap<>();
    Map<Integer,Integer> map2=new HashMap<>();
    public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {
        for(int i=0;i<nums1.length;i++){
            for(int j=0;j<nums2.length;j++){
                map1.put(-(nums1[i]+nums2[j]),map1.getOrDefault(-(nums1[i]+nums2[j]),0)+1);
            }
        }
        for(int i=0;i<nums1.length;i++){
            for(int j=0;j<nums2.length;j++){
                map2.put(nums3[i]+nums4[j],map2.getOrDefault(nums3[i]+nums4[j],0)+1);
            }
        }


        int res=0;
        Iterator<Map.Entry<Integer,Integer>> iterator=map2.entrySet().iterator();

        while(iterator.hasNext()){
            Map.Entry<Integer,Integer> entry=iterator.next();
            int key=entry.getKey();
            int value=entry.getValue();
            if(map1.containsKey(key)){
                int value2=map1.get(key);
                res+=value*value2;
            }
        }

        return res;


    }

    

}