开发者

java题解LeetCode454.四数相加示例

开发者 https://www.devze.com 2023-11-09 12:57 出处:网络 作者: 健身的墨镜
目录正文解决问题正文 给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足:
目录
  • 正文
  • 解决问题

正文

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

0 <= i, j, k, l < n

nums1[i] + nums2[j] + nums3[k] + nums4[l] == 0

解决问题

将n的四次方转变为n的平方,主要通编程客栈过按两个两个分组打包实现,此外注意map中记录的是前两个数组中的内容两两相加的值的出现次数,这样做是为了在后面两个数组中寻找时,对于每个匹配的组合,都在总的次数中加上对应值出现次数,这样做是因为该题不去重,每个元组都是独特的,所以都要算上

public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {
        int n=nums1.length;
        int count=0;
        Map<Integer,Integer> map=new HashMap<>();
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                if(map.containsKey(nums1[i]+nums2[j])){
                    int temp=map.get(nums1[i]+nums2[j])+1;
                    map.put(nums1[i]+nums2[j],temp);
              php  }
                else{
                    map.put(nums1[i]+nums2[j],1);
                }
            }
        }

        for (int i = 0; i < n; i++) {
            for (int j = 0;编程客栈 j < n; j++) {
                int temp=-(nums4[j]+nums3[i]);
                if(mwww.devze.comap.containsKey(temp)){
                    count=count+map.get(temp);
                }
    www.devze.com        }
        }
        return count;
    }

以上就是Java题解LeetCode454.四数相加示例的详细内容,更多关于java LeetCode四数相加的资料请关注编程客栈(www.devze.com)其它相关文章!

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号