【LeetCode-中等题】 454. 四数相加 II

文章目录

题目

方法一:哈希表

哈希表记录前两个数组的和以及出现次数,然后记录后面两个数组的和,成功将四数之和转换为两数之和

因为本题特殊在和是为0 的 所以后面的两个数组之和取反 如果能在map的key中存在,说明存在和为0 的情况,则结果集数量+1

java 复制代码
class Solution {
    public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {
        int res = 0;  //结果集数量
        Map<Integer,Integer> map = new HashMap<>();//记录前两个数组的和以及出现次数
        for(int i : nums1)
            for(int j : nums2){
             if(!map.containsKey(i+j)) map.put(i+j,1);
             else map.put(i+j,map.get(i+j)+1);
        }

        //遍历后面两个数组取出各自的结果  然后再依次去加上map的key是否等于0,如果是 则将对应的次数加入结果集
        //因为这里已经把四数相加  简化成了两数相加了,并且相加结果要为0    那么他们之间要相加等于0   那么肯定是互为相反数的
        //那么只需要将后面的两个数组相加的和取反  再去map里面去匹配相同的key  取出次数即可
         for(int i : nums3)
            for(int j : nums4){
                int temp = (i+j)*-1;//取相反数
                if(map.containsKey(temp)) res+=map.get(temp);//得到相加为0 的数的次数
            }
            return res;
    }
}
相关推荐
2501_941982054 小时前
Python开发:外部群消息自动回复
java·前端·数据库
qinaoaini4 小时前
Spring中Aware的用法以及实现
java·数据库·spring
Epiphany.5564 小时前
蓝桥杯2024年第十五届决赛真题-套手镯
c++·算法·蓝桥杯
康小庄4 小时前
Java自旋锁与读写锁
java·开发语言·spring boot·python·spring·intellij-idea
沙河板混4 小时前
@Mapper注解和@MapperScan注解
java·spring boot·spring
Σίσυφος19004 小时前
E = Kᵀ F K 的数学原理
算法
知识即是力量ol4 小时前
口语八股:MySQL 核心原理系列(一):索引篇
java·数据库·mysql·八股·索引·面试技巧
小O的算法实验室4 小时前
2025年JIM SCI2区,基于Q学习多目标粒子群算法+节能型分布式流水车间调度,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
xifangge20254 小时前
[报错] SpringBoot 启动报错:Port 8080 was already in use 完美解决(Windows/Mac/Linux)
java·windows·spring boot·macos·错误解决
YunchengLi4 小时前
【计算机图形学中的四元数】1/2 Quaternions for Computer Graphics
人工智能·算法·机器学习