Leetcode454四数相加Ⅱ(java实现)

今天,我们分享的题目是Leetcode454四数相加Ⅱ,我们先来看题目:
Leetcode454四数相加Ⅱ(java实现)_第1张图片
首先可以从题意中大体得知,也是从某个集合中找有没有符合条件的元素。遇见这种类型的题目我们可以考虑用哈希表,本题我们选取的是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。
这是这两个函数需要注意的地方。
那么今天的题目就讲解到这里结束了,如果小伙伴们有什么疑问,欢迎在博客下方进行留言,博主看到会进行一一回复。(●’◡’●)!

你可能感兴趣的:(java,开发语言,哈希算法,数据结构)