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

四数相加 II--力扣454

四数相加 II

  • 题目
  • 思路
  • C++代码

题目

在这里插入图片描述

思路

我们需要统计元组的个数,并且不需要排序和去重,所以选择哈希表unordered_map。

要使得a+b+c+d=0,我们首先利用map在前两个数组中统计a+b的值以及该值出现的次数。

接下来我们去后两个数组中查找0-(c+d),因为a+b=0-(c+d),如果能够找到,说明在这四个数组中存在a+b+c+d=0,那么上述统计的a+b出现的次数即为元组个数,我们用count累计一下,然后继续遍历。

C++代码

class Solution {
public:
    int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) {
        unordered_map<int, int> map;
        //出现的元组个数
        int count = 0;
        //统计前两个数组元素之和a+b,以及出现的次数。
        for (int a : nums1) {
            for (int b : nums2) {
                map[a + b]++;
            }
        }
        //接下来在另外两个数组找到0-(a+b),上面统计的次数就为满足题目要求的元组数
        for (int c : nums3) {
            for (int d : nums4) {
                if (map.find(0 - (c + d)) != map.end()) {
                    count += map[0 - (c + d)];
                }
            }
        }
        return count;
    }
};

http://www.kler.cn/a/297600.html

相关文章:

  • KUKA中级学习4:修改软件中机器人名字,纠正示教器时间,下载备份文件进示教器
  • k8s的配置管理
  • ubuntu 22.04 编译安装新内核
  • 【H2O2|全栈】更多关于HTML(1)HTML进阶(一)
  • NLP-新词挖掘
  • nginx HTTPS服务器配置
  • ubuntu24.01 利用samba(SMB)实现不同系统文件共享
  • 电脑pe是什么意思_电脑pe系统作用详细分析
  • springboot+vue+mybatis计算机毕业设计医护系统的设计与实现+PPT+论文+讲解+售后
  • 【Tip】父子组件传值和页面跳转传值方法(vue和uniapp)
  • 批量复制指定文件夹——EXCEL VBA 实现
  • 详解TCP的三次握手
  • okhttp 拦截器用过那些? 什么情况下用的?如何使用?
  • ASP.NET Core 入门教学二十一 分布式追踪技术
  • 全国机器人大赛 Robocon 常州工学院团队首战国三
  • AI实时游戏引擎:颠覆传统游戏开发的新思路
  • 代理IP中的API接口:解锁高效与自动化的网络访问新方式
  • SpringMVC基于注解使用
  • c++ 2024/9/4
  • 大数据与人工智能:脑科学与人工神经网络ANN