四数相加 II

news2024/12/23 12:34:10

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

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

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/4sum-ii

思路:

  1. 首先定义 一个unordered_map,key放a和b两数之和,value 放a和b两数之和出现的次数。
  2. 遍历大A和大B数组,统计两个数组元素之和,和出现的次数,放到map中。
  3. 定义int变量count,用来统计 a+b+c+d = 0 出现的次数。
  4. 在遍历大C和大D数组,找到如果 0-(c+d) 在map中出现过的话,就用count把map中key对应的value也就是出现次数统计出来。
  5. 最后返回统计值 count 就可以了

代码:

class Solution {
public:
    int fourSumCount(vector<int>& A, vector<int>& B, vector<int>& C, vector<int>& D) {
        unordered_map<int, int> umap; //key:a+b的数值,value:a+b数值出现的次数
        // 遍历大A和大B数组,统计两个数组元素之和,和出现的次数,放到map中
        for (int a : A) {
            for (int b : B) {
                umap[a + b]++;
            }
        }
        int count = 0; // 统计a+b+c+d = 0 出现的次数
        // 在遍历大C和大D数组,找到如果 0-(c+d) 在map中出现过的话,就把map中key对应的value也就是出现次数统计出来。
        for (int c : C) {
            for (int d : D) {
                if (umap.find(0 - (c + d)) != umap.end()) {
                    count += umap[0 - (c + d)];
                }
            }
        }
        return count;
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/462561.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java 网络IO编程总结 nio netty原理 bio nio aio io多路复用 事件驱动 信号驱动 汇总总结

目录 ​编辑 io 多路复用 NIO 多线程 和 io多路复用区别 &#xff1a; Netty 操作流程 看了众多精简总结 Netty Bio Nio Aio Io多路复用 事件驱动 信号驱动 io 多路复用 I/O 多路复用模型是利用select、poll、epoll可以同时监察多个流的 I/O 事件的能力&#xff…

【备忘录设计模式详解】C/Java/JS/Go/Python/TS不同语言实现

简介 备忘录模式&#xff08;Memento Pattern&#xff09;是一种结构型设计模式。这种模式就是在不破坏封装的条件下&#xff0c;将一个对象的状态捕捉(Capture)住&#xff0c;并放在外部存储起来&#xff0c;从而可以在将来合适的时候把这个对象还原到存储起来的状态。备忘录…

接口冒烟测试方法

接口冒烟测试方法 今年遇到了几个问题&#xff0c;与接口的功能和性能相关&#xff0c;恰巧最近公司也在组织以冒烟测试为主题的活动&#xff0c;于是乎突发奇想&#xff0c;寻思着能否将接口测试与冒烟测试结合起来&#xff0c;发掘一些新的接口测试思路与方法。 平时对接口…

SpringBoot创建与运行

文章目录 一、SpringBoot是什么&#xff1f;二、SpringBoot项目创建IDEA创建SpringBoot项目网页版创建SpringBoot项目项目目录介绍输出Hello SpringBoot 一、SpringBoot是什么&#xff1f; 如果我们说Spring的诞生是为了简化Java程序开发的&#xff0c;那么SpringBoot的诞生是为…

【三十天精通Vue 3】 第十八天 Vue 3的国际化详解

✅创作者&#xff1a;陈书予 &#x1f389;个人主页&#xff1a;陈书予的个人主页 &#x1f341;陈书予的个人社区&#xff0c;欢迎你的加入: 陈书予的社区 &#x1f31f;专栏地址: 三十天精通 Vue 3 文章目录 引言一、Vue 3 国际化概述1.1 国际化的概念1.2 国际化的作用1.3 V…

数据结构(数组、链表、栈、队列、树)

文章目录 1.数组1.1数组的特点1.2自定义数组 2.链表2.1链表的特点2.2自定义链表2.2.1自定义单向链表2.2.2自定义双向链表 3.栈3.1栈的特点3.2 Stack使用举例3.3 自定义栈 4. 队列5. 树与二叉树5.1 树的理解5.2 二叉树的基本概念5.3 二叉树的遍历5.4 经典二叉树和红黑树5.5 二叉…

Jmeter基础之---jmeter基础概念

JMeter 介绍&#xff1a; 一个非常优秀的开源的性能测试工具。 优点&#xff1a;你用着用着就会发现它的重多优点&#xff0c;当然不足点也会呈现出来。 从性能工具的原理划分&#xff1a; Jmeter工具和其他性能工具在原理上完全一致&#xff0c;工具包含4个部分&#xff1a…

GitLab与jekins结合构建持续集成(cl)环境(3)

目录 在jenkins上部署maven 配置maven jenkins回滚 Git方式回滚 通过发布时备份&#xff0c;回滚是选择指定备份文件进行回滚 jenkins添加邮件报警 Jenkins如何远程管理部署节点 Jenkins的远程管理方式&#xff1a; SSH Plugin Publish over SSH jenkins整合Ansible je…

山路转债上市价格预测

山路转债 基本信息 转债名称&#xff1a;山路转债&#xff0c;评级&#xff1a;AA&#xff0c;发行规模&#xff1a;48.36亿元。 正股名称&#xff1a;山东路桥&#xff0c;今日收盘价&#xff1a;7.3元&#xff0c;转股价格&#xff1a;8.17元。 当前转股价值 转债面值 / 转股…

港科夜闻|香港科技大学(广州)与中国电信广东公司签署战略合作协议

关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1、香港科技大学(广州)与中国电信广东公司签署战略合作协议。根据协议&#xff0c;双方将围绕各自科技创新及发展需要&#xff0c;整合双方的优质资源和优势能力&#xff0c;务实开展多方位的战略合作。本次合作&#xff0c…

ROS学习第四十二节——地图服务

https://download.csdn.net/download/qq_45685327/87721374 上一节我们已经实现通过gmapping的构建地图并在rviz中显示了地图&#xff0c;不过&#xff0c;上一节中地图数据是保存在内存中的&#xff0c;当节点关闭时&#xff0c;数据也会被一并释放&#xff0c;我们需要将栅格…

[译]理解 Rust 中的所有权

本文译者为 360 奇舞团前端开发工程师 原文标题&#xff1a;Understanding ownership in Rust 原文作者&#xff1a;Ukpai Ugochi 原文链接&#xff1a;https://blog.logrocket.com/understanding-ownership-in-rust/ 在 Stack Overflow 进行的开发人员调查中&#xff0c;Rust …

第二十六章 案例TodoList 之实现Footer组件

本小节&#xff0c;我们来实现最后的Footer组件的功能&#xff0c;它的功能主要有&#xff1a; 记录已完成和全部的任务列表数量点击【复选框】可以实现全选和全不选点击【删除已完成】按钮&#xff0c;可以将选中的任务项删除掉 实现已完成和全部的任务列表数量 步骤1&#…

提交Spark应用程序

文章目录 一&#xff0c;提交语法格式二&#xff0c;spark-submit常用参数三&#xff0c;案例演示 - 提交Spark自带的圆周率计算程序&#xff08;一&#xff09;Standalone模式&#xff0c;采用client提交方式&#xff08;二&#xff09;Standalone模式&#xff0c;采用cluster…

PMP第六版_1~3章

回想起来,距离上次看pmp已经过去一年多, 等着等着,第七版都出来了.自己还是没下决心考.第六版也都忘干净了.哎. 越来越不记事了.一转眼2023年了.哎…时间过得真快. 做个记录,顺便勉励自己吧. PMP 项目管理 按照十大知识领域来写的 要有美式思维 题干量大(因中英语言区别) 越…

Linux网络服务远程访问及控制SSH(你明目张胆的偏爱就是救赎)

文章目录 一、SSH的介绍及其相关知识点1.简介2.SSH的优点3.SSH的密钥登录 二、SSH的运用1.存放ssh服务端的配置文件2.白名单&黑名单3.存放ssh客户端的配置文件 三、ssh密钥登录操作1.密码验证2.秘钥对验证3.ssh远程登录SCP 远程复制SFTP获取服务端的文件 四、秘钥对的创建操…

nodejs+vue 校友录校友捐赠系统

校友录的设计与实现该系统面对的是用户和管理员&#xff0c;对于用户来说其最大的作用是在校友录的设计与实现前台查看校友活动、校友风采、校友捐赠、班级录、新闻中心、&#xff0c;其次进行交流园地。对管理员而言则是对用户、活动类型、校友活动、校友风采、校友捐赠、班级…

PCIE内核注册详解

代码结构 在Linux内核中&#xff0c;PCIe驱动程序的注册和处理涉及到许多文件&#xff0c;其中一些主要的文件包括&#xff1a; drivers/pci/pci.h&#xff1a;这个文件定义了PCIe驱动程序结构体和相关的函数。驱动程序需要包含这个头文件才能使用PCIe相关的函数和结构体。 d…

【观察者设计模式详解】C/Java/JS/Go/Python/TS不同语言实现

简介 观察者模式&#xff08;Observer Pattern&#xff09;是一种行为型模式。它定义对象间的一种一对多的依赖关系&#xff0c;当一个对象的状态发生改变时&#xff0c;所有依赖于它的对象都得到通知并被自动更新。 观察者模式使用三个类Subject、Observer和Client。Subject…

ChatGPT热中的冷思考

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和…