当前位置: 首页 > news >正文

LeetCode[454]四数相加Ⅱ

思路

如果我们暴力求解一定是n的四次方,那我们暴力肯定是过不去的,我们能简化四次方吗?

可以,我第一次尝试把四次方简化成二次方,但是我们一共四个数组,怎么简化成二次方,那我们就把四个数组看成两个数组,这样我们就可以使用二次方进行求解了,每两个数组进行一次n方。这道题也是一道哈希题,我们面对哈希题就可以使用数组,set和map,因为我们需要统计有几个原组和前两个数组的和,所以我们使用map来搞。

前两个数组使用n方进行和的相加存入map,如果存在相同值,我们value就++

后两个数组使用n方进行和的相加,如果我们想结果=0,那么前两个数组和后两个数组的和一定是相反数,如果相加=0了,那么我们就将一开始存的value相加到结果中就行了。

因为这个value代表了前两个数组一共有多少种结果。

代码:

class Solution {
    public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {
        int count = 0;
        Map<Integer, Integer> map = new HashMap<>();
        for (int i = 0; i < nums1.length; i++) {
            for (int j = 0; j < nums2.length; j++) {
                int num = nums1[i] + nums2[j];
                map.put(num, map.getOrDefault(num, 0) + 1);
            }
        }
        for (int i = 0; i < nums3.length; i++) {
            for (int j = 0; j < nums4.length; j++) {
                int num = nums3[i] + nums4[j];
                if (map.containsKey(-num)) {
                    count += map.get(-num);
                }
            }
        }
        return count;
    }
}

 

相关文章:

  • 近期学习资料,尚未整理
  • Wpf Avalonia-实现中英文切换工程
  • VAE,以及概率分布的各种知识点
  • 抓包工具:fiddler和wireshark对比
  • Python Django入门(创建其他网页)
  • PreparedStatement 和 Statement 从 功能、性能、安全性、适用场景 等维度详细对比分析
  • 架构师面试(十九):IM 架构
  • 某视频的解密下载
  • 地理信息科学(GIS)专业的就业出路与转型新方向,传统就业领域VS新兴技术赛道
  • docker模拟Dos_SYN Flood拒绝服务攻击 (Ubuntu20.04)
  • MyBatis 的一次缓存与二次缓存
  • 任务型多轮对话(二)| 意图识别
  • pta 乐子人游戏
  • 调用feapder作为子程序时setting.py文件不起作用
  • C++标准库新部件:解锁编程新姿势
  • win注册表提示没有权限进行修改的解决方式
  • (十)方法的定义 方法的作用域
  • 玩客云 armbian 安装mqtt服务端
  • 关于IPC sensor条纹问题分析
  • 在Kubernetes 1.26 上使用 StatefulSet 部署 MySQL8
  • 从良渚到三星堆:一江水串起了5000年的文明对话
  • 摄影师|伊莎贝尔·穆尼奥斯:沿着身体进行文化溯源
  • 篮球培训机构东方启明星被指停摆,家长称已登记未退费用超百万
  • 以军称已开始在加沙的新一轮大规模攻势
  • 时隔3年,持续近2小时,俄乌在土耳其谈成了什么?
  • 特朗普政府涉税改法案遭众议院预算委员会否决