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

代码随想录二刷 | 哈希表 |四数相加II

代码随想录二刷 | 哈希表 |四数相加II

  • 题目描述
  • 解题思路 & 代码实现

题目描述

454.四数相加II

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

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

示例 1:

输入:nums1 = [1,2], nums2 = [-2,-1], nums3 = [-1,2], nums4 = [0,2]
输出:2
解释:
两个元组如下:

  1. (0, 0, 0, 1) -> nums1[0] + nums2[0] + nums3[0] + nums4[1] = 1 + (-2) + (-1) + 2 = 0
  2. (1, 1, 0, 0) -> nums1[1] + nums2[1] + nums3[0] + nums4[0] = 2 + (-1) + (-1) + 0 = 0

示例 2:

输入:nums1 = [0], nums2 = [0], nums3 = [0], nums4 = [0]
输出:1

提示:

  • n == nums1.length
  • n == nums2.length
  • n == nums3.length
  • n == nums4.length
  • 1 <= n <= 200
  • -228 <= nums1[i], nums2[i], nums3[i], nums4[i] <= 228

解题思路 & 代码实现

这道题目是四个独立的数组,只要找到A[i] + B[j] + C[k] + D[l] = 0就可以,不用考虑有重复的四个元素相加等于0的情况。

本题解题步骤:

  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;for (int a : A) {for (int b : B) {umap[a + b]++;}}int count = 0;for (int c : C) {for (int d : D) {if (umap.find(0 - (c + d)) ! = umap.end()) {count += umap[0 - (c + d)];}}}return count;}
};

时间复杂度:O(n^2)
空间复杂度:O(n^2),最坏情况下A和B的值各不相同,相加产生的数字个数为n ^ 2

相关文章:

代码随想录二刷 | 哈希表 |四数相加II

代码随想录二刷 &#xff5c; 哈希表 &#xff5c;四数相加II 题目描述解题思路 & 代码实现 题目描述 454.四数相加II 给你四个整数数组 nums1、nums2、nums3 和 nums4 &#xff0c;数组长度都是 n &#xff0c;请你计算有多少个元组 (i, j, k, l) 能满足&#xff1a; 0…...

Flutter | TextField长按时选项菜单复制、粘贴显示为英文问题解决

Flutter | TextField长按时选项菜单复制、粘贴显示为英文问题解决 问题描述&#xff1a; 长按TextField后&#xff0c;显示剪切、复制等选项为英文&#xff0c;如下图所示&#xff0c;这是因为问未设置语言本地化&#xff0c;我们需要进行设置。 首先在pubspec.yaml加入以下依赖…...

如何找出excel中两列数据中不同的值(IF函数的用法)

第一部分&#xff0c;举例&#xff1a; 例1&#xff1a; 如下图所示&#xff0c;A列和B列是需要比较的数据&#xff0c;C列为对比规则&#xff1a;IF(A2B2,"是","否") 示例图 例2&#xff1a;给B列的成绩评等级 C列的规则&#xff1a; IF(B2>85,&qu…...

C# WPF上位机开发(掌握一点c#基础)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 wpf虽然比较简单&#xff0c;但是最好还是要有一点c#的基础比较好。本身wpf有点类似于web开发&#xff0c;前端和html差不多&#xff0c;后端则和j…...

UIkit-UIAlertContent

简单Demo //注意&#xff01;&#xff01;&#xff01;必须放在viewController的viewDidAppear里面&#xff0c;viewDidLoad里面不行 - (void)viewDidAppear:(BOOL)animated {// 创建 UIAlertControllerUIAlertController *alertController [UIAlertController alertControll…...

C语言-内存函数详解

文章目录 1. memcpy使用和模拟实现2. memmove使用和模拟实现3. memset函数的使用4. memcmp函数的使用 1. memcpy使用和模拟实现 返回类型和参数&#xff1a; void * memcpy ( void * destination, const void * source, size_t num );1.函数memcpy从source的位置开始向后复制…...

超越噪音,让音乐重获新生:iZotope RX 10音频降噪修复软件

在音乐制作或者音频处理的过程中&#xff0c;噪音往往是一个让人头痛的问题。无论是环境噪音&#xff0c;还是设备产生的噪音&#xff0c;都会对音频质量产生重大影响。而现在&#xff0c;我们有了iZotope RX 10&#xff0c;这款专业的音频降噪修复软件&#xff0c;可以将你从噪…...

【兔子王赠书第9期】ChatGPT进阶:提示工程入门

文章目录 写在前面ChatGPT推荐图书关键点编辑推荐内容简介推荐理由 粉丝福利写在后面 写在前面 人类一直在寻找、制造并使用工具&#xff0c;以扩展我们的能力&#xff0c;适应我们的环境&#xff0c;甚至超越我们的生物限制。现在&#xff0c;我们正站在一个历史性的分水岭之…...

机器学习基础Matplotlib绘图

一、运行环境 学习工具&#xff1a;jupyter-notebookpython版本&#xff1a;311系统&#xff1a;Win11 二、什么是matplotlib&#xff1f; matplotlib是基于python生态开发的一个可视化绘图库&#xff0c;它的出现让python在数据分析及机器学习方面占了重要的一部分&#…...

【高效开发工具系列】PlantUML入门使用

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

【第三节:微信小程序 3、app.js配置】微信小程序入门,以思维导图的方式展开3

目录 提供了2个函数&#xff1a; app.js配置 【第三节&#xff1a;微信小程序 3、app.js配置】微信小程序入门&#xff0c;以思维导图的方式展开3 提供了2个函数&#xff1a; app() getApp() --------------------------- app.js配置 App() 功能 Ap…...

Vue 或者 React 中,什么情况下会用 Es6 的 Class 类

// 问个问题&#xff0c;一般在 Vue 或者 React中 // 在框架具备很多组件通讯技术或者js语法支持的情况下&#xff0c;什么情况下会用 Es6 的 Class类&#xff1f;在Vue或React中&#xff0c;通常会在以下情况下使用ES6的Class类&#xff1a; 复杂组件或模块: 当需要构建较为复…...

【Android】Android Framework系列--Launcher3各启动场景源码分析

Android Framework系列–Launcher3各启动场景源码分析 Launcher3启动场景 Launcher3是Android系统提供的默认桌面应用(Launcher)&#xff0c;它的源码路径在“packages/apps/Launcher3/”。 Launcher3的启动场景主要包括&#xff1a; 开机后启动&#xff1a;开机时&#xff…...

【Qt开发流程】之拖放操作1:介绍

描述 Drag and drop 提供了一种简单的可视化机制&#xff0c;用户可以使用它在应用程序之间和应用程序内部传输信息。拖放的功能类似于剪贴板的剪切和粘贴机制。 本文描述了基本的拖放机制&#xff0c;并概述了在自定义控件中启用该机制的方法。Qt的许多控件也支持拖放操作&a…...

招募引流模式是实体门店吸引顾客的一种有效策略

在如今激烈的市场竞争和庞大的客户需求中&#xff0c;应该采取什么样的方式来应对&#xff0c;才能找到自己的一席之地。招募引流模式是实体门店吸引顾客的一种有效策略&#xff0c;通常招募体验官或合作伙伴&#xff0c;让他们协助门店进行推广活动&#xff0c;达到增加客流量…...

macos安装小软件 cmake

一&#xff0c;cmake下载主页 Download CMake 二&#xff0c;下载&#xff0c;解压&#xff0c;配置&#xff0c;编译&#xff0c;安装 0. 假设macos中已经存在了 clang和make工具 1. 通过网页下载最新的稳定版 cmake***.tar.gz 源代码 2. tar zxf cmake***.tar 3. cd cmake***…...

思伟老友记 | 厦门路桥翔通海砼建材有限公司与思伟软件携手走过23年

23年 感恩相伴 携手成长 2001年-2023年&#xff0c;厦门路桥翔通海砼建材有限公司已携手上海思伟软件有限公司走过23年。从最初的半手动生产模式到如今的自动生产一体化系统&#xff0c;海砼公司通过思伟软件生产混凝土累计超过1000万m&#xff0c;思伟软件则借助海砼公司的实…...

SpringCloud 微服务全栈体系(十七)

第十一章 分布式搜索引擎 elasticsearch 七、搜索结果处理 搜索的结果可以按照用户指定的方式去处理或展示。 1. 排序 elasticsearch 默认是根据相关度算分&#xff08;_score&#xff09;来排序&#xff0c;但是也支持自定义方式对搜索结果排序。可以排序字段类型有&#…...

基于ThinkPHP8 + Vue3 + element-ui-plus + 微信小程序(原生) + Vant2 的 BBS论坛系统设计【PHP课设】

一、BBS论坛功能描述 我做的是一个论坛类的网页项目&#xff0c;每个用户可以登录注册查看并发布文章&#xff0c;以及对文章的点赞和评论&#xff0c;还有文件上传和个人签名发布和基础信息修改&#xff0c;管理员对网站的数据进行统计&#xff0c;对文章和文件的上传以及评论…...

苹果cms搭建教程附带免费模板

准备工作: 一台服务器域名源码安装好NGINX+PHP7.0+MYSQL5.5 安装php7.0的扩展,fileinfo和 sg11,不安装网站会搭建失败。 两个扩展都全部安装好了之后 点击-服务-重载配置 这样我们的网站环境就配置完成啦 下载苹果cms 苹果cms程序github链接:选择mac10!下载即可 http…...

RAGFlow实战:从零基础到构建企业级AI知识库

在2026年的今天&#xff0c;大模型&#xff08;LLM&#xff09;已经不再是新鲜事&#xff0c;但如何将这些“通才”模型转化为企业内部的“专才”&#xff0c;依然是技术落地的核心痛点。检索增强生成&#xff08;RAG&#xff09;技术应运而生&#xff0c;而RAGFlow作为一款开源…...

AI时代新型的项目管理应该是什么样的?嗣

AI训练存储选型的演进路线 第一阶段&#xff1a;单机直连时代 早期的深度学习数据集较小&#xff0c;模型训练通常在单台服务器或单张GPU卡上完成。此时直接将数据存储在训练机器的本地NVMe SSD/HDD上。 其优势在于IO延迟最低&#xff0c;吞吐量极高&#xff0c;也就是“数据离…...

【PHP 8.9 纤维协程实战黄金手册】:20年架构师亲授高并发服务重构的5大避坑法则

第一章&#xff1a;PHP 8.9 纤维协程的底层机制与演进本质PHP 8.9 并非官方发布的正式版本&#xff08;截至 PHP 官方最新稳定版为 8.3&#xff09;&#xff0c;但本章所探讨的“纤维协程”概念&#xff0c;实为对 PHP 8.1 引入的 Fiber 类、经 8.2/8.3 持续优化后&#xff0c;…...

基于注意力流的鲁棒信息隐写方法:从扩散隐写到Attention Flow的新探索

在多媒体信息安全领域&#xff0c;图像隐写一直是一个兼具理论深度与应用价值的重要研究方向。近年来&#xff0c;随着深度学习的发展&#xff0c;隐写方法逐渐从传统的像素级嵌入&#xff08;如LSB、DCT、DWT&#xff09;演进到基于神经网络的隐写模型&#xff0c;再到当前快速…...

intv_ai_mk11企业应用:法务合同审查要点提取+风险条款标红提示自动化流程

intv_ai_mk11企业应用&#xff1a;法务合同审查要点提取风险条款标红提示自动化流程 1. 企业法务合同审查的痛点 企业法务部门每天需要处理大量合同文件&#xff0c;传统人工审查方式存在几个明显痛点&#xff1a; 效率低下&#xff1a;一份10页的合同通常需要30-60分钟人工…...

Linux 线程:从虚拟地址空间到 POSIX 线程控制全解析

前言在 Linux 系统编程与操作系统原理中&#xff0c;线程是并发执行的核心单元&#xff0c;而虚拟地址空间与分页机制是线程共享资源、轻量化运行的底层基石。本文将从线程本质、内存管理原理、进程线程对比、POSIX 线程控制、地址空间布局到线程封装&#xff0c;层层拆解 Linu…...

中央企业如何借助数智平台推动技术应用与创新

观点作者&#xff1a;科易网-国家科技成果转化&#xff08;厦门&#xff09;示范基地一、现状概述&#xff1a;成效与短板 中央企业在我国科技创新体系中占据核心地位&#xff0c;其技术成果转化效率直接关乎国家产业链韧性和产业升级进程。近年来&#xff0c;随着数字化浪潮席…...

2025河北石家庄/邯郸唐山机械互动屏设计如何重塑展厅叙事

你是否曾站在展厅里&#xff0c;看着墙上静态的文字与图片&#xff0c;心里却渴望“走进”故事里&#xff1f;或是带着孩子观展&#xff0c;却难以让他对玻璃后的文物投去好奇的一瞥&#xff1f;传统展厅正在经历一场静默的革命——当机械的精密与屏幕的智能相遇&#xff0c;展…...

window 10 主机安装ubuntu22 系统

准备工作 下载ubuntu22镜像 使用ubuntu_server_220405时&#xff0c;当在/etc/netplan/50-cloud-init.yaml文件里编辑网卡信息 network:version: 2renderer: networkdethernets:eth0:dhcp4: noaddresses: - 172.20.10.2/24routes:- to: defaultvia: 172.20.10.1nameservers:ad…...

OpenClaw+百川2-13B-4bits:自动化生成周报并邮件发送实战

OpenClaw百川2-13B-4bits&#xff1a;自动化生成周报并邮件发送实战 1. 为什么选择这个组合方案 作为一位长期被周报折磨的开发者&#xff0c;我一直在寻找能解放双手的自动化方案。传统模板化周报工具缺乏灵活性&#xff0c;而纯手工编写又耗时费力。直到发现OpenClaw与百川…...