package com.zmz.algorithm.hashtable;

import java.util.HashMap;

/**
 * @author 张明泽
 * Create by 2022/5/30 23:18
 * 四数相加II
 * LeetCode-454
 */
public class FourTogether2 {
    public static void main(String[] args) {
        int[] nums1 = {1,2};
        int[] nums2 = {-2,-1};
        int[] nums3 = {-1,2};
        int[] nums4 = {0,2};
        int result = fourSum(nums1, nums2, nums3, nums4);
        System.out.println(result);
    }

    /**
     * 利用 hashMap 解决, K 存 a + b 的值, V 存 a + b 和出现的次数
     */
    public static int fourSum(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {
        HashMap<Integer,Integer> hashMap = new HashMap<>();
        for (int i : nums1) {
            for (int j : nums2) {
                int sum = i + j;
                if (hashMap.containsKey(sum)) {
                    hashMap.put(sum,hashMap.get(sum) + 1);
                } else {
                    hashMap.put(sum, 1);
                }
            }
        }
        // 判断
        int result = 0;
        for (int i : nums3) {
            for (int j : nums4) {
                int sum = i + j;
                if (hashMap.containsKey(0 - sum)) {
                    result = result + hashMap.get(0 - sum);
                }
            }
        }
        return result;
    }
}
最后修改:2022 年 06 月 02 日 10 : 02 AM
赏杯咖啡喝 谢谢您~