🌕 🌗 454. 四数相加 II

吞佛童子2022年6月9日
  • algorithm
  • hash
小于 1 分钟

🌕 🌗 454. 四数相加 II

难度: 🌕 🌗

问题描述

img_21.png


解法

class Solution {
    public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {
        // 思路:
        // A & B 一组,求可能出现的和的情况 O(N^2)
        // C & D 一组,求能达到结果的情况,而不用再次放入另一个 map 中
        int res = 0;
        int len = nums1.length;
        HashMap<Integer, Integer> map = new HashMap<>();
        for(int i = 0; i < len; i ++) {
            for(int j = 0; j < len; j ++) {
                int sum = nums1[i] + nums2[j];
                if(!map.containsKey(sum)) {
                    map.put(sum, 1);
                } else {
                    int count = map.get(sum);
                    count ++;
                    map.put(sum, count);
                }
            }
        }
        for(int i = 0; i < len; i ++) {
            for(int j = 0; j < len; j ++) {
                int target = - (nums3[i] + nums4[j]);
                if(map.containsKey(target)) {
                    int count = map.get(target);
                    res += count;
                }
            }
        }
        return res;
    }
}

输出

img_20.png

上次编辑于: 2022/6/20 下午8:24:47
贡献者: liuxianzhishou