454.四数相加

给你四个整数数组 nums1nums2nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足:

  • 0 <= i, j, k, l < n
  • nums1[i] + nums2[j] + nums3[k] + nums4[l] == 0

方法一:

双层for循环,将nums1、nums2的所有元素和的可能求出来,用<key, value>表示<sum,sum出现的次数>

再次双层for时,nums3、nums4和与nums1、nums2相反时,取出这个<sum出现的次数>,将这些<sum出现的次数>求和到ans中,返回即可。

public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4){
    Map<Integer, Integer> map1 = new HashMap<>();
    int n = nums1.length;
    for(int i = 0; i < n; i++){
        for(int j = 0; j < n; j++){
            int sum = nums1[i] + nums[j];
            if(map1.containsKey(sum)){ 
                int value = map1.get(sum)
                map1.put(sum, ++value);
            } else {
                map1.put(sum, 1);
            }
        }
    }
    int ans = 0;
    for(int i = 0; i < n; i++){
        for(int j = 0; j < n; j++){
            int sum = ( nums3[i] + nums4[j] ) * (-1);
            if(map1.containsKey(sum)) ans += map1.get(sum);
        }
    }
    return ans;
}

简化:

public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {
    // 计算nums1 nums2和有哪些种,并记录每种的次数
    Map<Integer, Integer> map1 = new HashMap<>();
    int n = nums1.length;
    for(int i : nums1){
        for(int j : nums2){
            int sum = i + j;
            // ket - sum   value --次数
            map1.put(sum, map1.getOrDefault(sum, 0) + 1 );
            // map1.getOrDefault(sum, 0) + 1 
            // 如果存在sum这个key就返回它的value,不存在就返回0
            // +1 代表,如果存在sum这个key就value++,不存在就加入一个,value设置为1
            // if(map1.containsKey(sum)){
            //     int value =  map1.get(sum);
            //     map1.put(sum, ++value);
            // } else {
            //     map1.put(sum, 1);
            // }
        }
    }
    int ans = 0;
    //Map<Integer, Integer> map2 = new HashMap<>();
    for(int i : nums3){
        for(int j : nums4){
            int sum = -i - j;
            if(map1.containsKey(sum)) ans += map1.get(sum);
        }
    }
    return ans;
}

相关推荐

  1. 454.相加

    2024-03-20 05:16:06       19 阅读
  2. LeetCode454 相加

    2024-03-20 05:16:06       19 阅读
  3. 力扣454 相加

    2024-03-20 05:16:06       38 阅读
  4. 【Leetcode】454. 相加 II

    2024-03-20 05:16:06       32 阅读
  5. 【LeetCode】454. 相加 II

    2024-03-20 05:16:06       19 阅读
  6. Golang 相加 leetcode454 map哈希表

    2024-03-20 05:16:06       35 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-20 05:16:06       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-20 05:16:06       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-20 05:16:06       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-20 05:16:06       20 阅读

热门阅读

  1. 保姆级离线环境安装docker和docker-compose

    2024-03-20 05:16:06       19 阅读
  2. 编写dockerfile文件,将打包推送到dockerhub上

    2024-03-20 05:16:06       16 阅读
  3. FFmpeg-- c++实现:音频流aac和视频流h264封装

    2024-03-20 05:16:06       16 阅读
  4. 预防GPT-3和其他复杂语言模型中的“幻觉”

    2024-03-20 05:16:06       18 阅读
  5. [python] ETL 工作流程 Prefect

    2024-03-20 05:16:06       30 阅读
  6. 计算机网络1.1网络定义及发展

    2024-03-20 05:16:06       17 阅读