Leetcode454四数相加Ⅱ(java实现)

本文介绍了如何使用哈希表(Map)解决LeetCode问题454,通过计算两个数组元素之和并存储在Map中,再遍历其他两个数组找到目标值的和,计算其出现次数。作者详细解释了代码实现和关键操作如`maps.put()`和`maps.get()`的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天,我们分享的题目是Leetcode454四数相加Ⅱ,我们先来看题目:
在这里插入图片描述
首先可以从题意中大体得知,也是从某个集合中找有没有符合条件的元素。遇见这种类型的题目我们可以考虑用哈希表,本题我们选取的是map集合,因为题目范围较大,并且可以存在重复的。
解题思路:我们首先开拓一个map集合,然后遍历数组nums1和nums2数组并记录它们的所有元素的和记为a+b,并且存放到map集合中,之后我们遍历nums3和num4数组并且记录num3数组和nums4数组中的和记为c+d,那么我们遍历maps集合寻找目标元素0-(c+d),如果有则返回它的出现的次数。
我们结合代码进行具体的讲解:

class Solution {
    public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {
        int i=0;
        int j=0;
        int res=0;
        Map<Integer,Integer> maps=new HashMap<>();
        for (i=0;i<nums1.length;i++){
            for (j=0;j<nums2.length;j++){
                int sum=0;
                sum=nums1[i]+nums2[j];
                //如果map集合中已经有了sum
                if (maps.containsKey(sum)){
                    //将sum的value更新
                    maps.put(sum,maps.get(sum)+1);
                }else {
                    //如果没有存放过,将sum的value记为1
                    maps.put(sum,1);
                }


            }
        }
        for (i=0;i<nums3.length;i++){
            for (j=0;j<nums4.length;j++){
                //目标值
                int sum=-(nums3[i]+nums4[j]);
                //如果map中存在我们想要的目标值
                if (maps.containsKey(sum)){
                    //将目标值所有的情况进行累加
                    res+= maps.get(sum);
                }
            }
        }
        return res;
    }
}

maps.put(sum,maps.get(sum)+1)我们使用 get() 方法获取键为 “sum” 的值,并将其存储在 sum 变量中。然后,我们将 sum 的值加1,并使用 put() 方法将新的值更新到 Map 中。
maps.get()方法:如果maps中存在我们想要的key,返回1,否则返回null。
这是这两个函数需要注意的地方。
那么今天的题目就讲解到这里结束了,如果小伙伴们有什么疑问,欢迎在博客下方进行留言,博主看到会进行一一回复。(●’◡’●)!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值