代码随想录二刷 | 哈希表 |四数相加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
解释:
两个元组如下:
- (0, 0, 0, 1) -> nums1[0] + nums2[0] + nums3[0] + nums4[1] = 1 + (-2) + (-1) + 2 = 0
- (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的情况。
本题解题步骤:
- 首先定义 一个unordered_map,key放a和b两数之和,value 放a和b两数之和出现的次数。
- 遍历大A和大B数组,统计两个数组元素之和,和出现的次数,放到map中。
- 定义int变量count,用来统计 a+b+c+d = 0 出现的次数。
- 在遍历大C和大D数组,找到如果 0-(c+d) 在map中出现过的话,就用count把map中key对应的value也就是出现次数统计出来
- 最后返回统计值 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
代码随想录二刷 | 哈希表 |四数相加II 题目描述解题思路 & 代码实现 题目描述 454.四数相加II 给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足: 0…...
Flutter | TextField长按时选项菜单复制、粘贴显示为英文问题解决
Flutter | TextField长按时选项菜单复制、粘贴显示为英文问题解决 问题描述: 长按TextField后,显示剪切、复制等选项为英文,如下图所示,这是因为问未设置语言本地化,我们需要进行设置。 首先在pubspec.yaml加入以下依赖…...
如何找出excel中两列数据中不同的值(IF函数的用法)
第一部分,举例: 例1: 如下图所示,A列和B列是需要比较的数据,C列为对比规则:IF(A2B2,"是","否") 示例图 例2:给B列的成绩评等级 C列的规则: IF(B2>85,&qu…...
C# WPF上位机开发(掌握一点c#基础)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 wpf虽然比较简单,但是最好还是要有一点c#的基础比较好。本身wpf有点类似于web开发,前端和html差不多,后端则和j…...
UIkit-UIAlertContent
简单Demo //注意!!!必须放在viewController的viewDidAppear里面,viewDidLoad里面不行 - (void)viewDidAppear:(BOOL)animated {// 创建 UIAlertControllerUIAlertController *alertController [UIAlertController alertControll…...
C语言-内存函数详解
文章目录 1. memcpy使用和模拟实现2. memmove使用和模拟实现3. memset函数的使用4. memcmp函数的使用 1. memcpy使用和模拟实现 返回类型和参数: void * memcpy ( void * destination, const void * source, size_t num );1.函数memcpy从source的位置开始向后复制…...
超越噪音,让音乐重获新生:iZotope RX 10音频降噪修复软件
在音乐制作或者音频处理的过程中,噪音往往是一个让人头痛的问题。无论是环境噪音,还是设备产生的噪音,都会对音频质量产生重大影响。而现在,我们有了iZotope RX 10,这款专业的音频降噪修复软件,可以将你从噪…...
【兔子王赠书第9期】ChatGPT进阶:提示工程入门
文章目录 写在前面ChatGPT推荐图书关键点编辑推荐内容简介推荐理由 粉丝福利写在后面 写在前面 人类一直在寻找、制造并使用工具,以扩展我们的能力,适应我们的环境,甚至超越我们的生物限制。现在,我们正站在一个历史性的分水岭之…...
机器学习基础Matplotlib绘图
一、运行环境 学习工具:jupyter-notebookpython版本:311系统:Win11 二、什么是matplotlib? matplotlib是基于python生态开发的一个可视化绘图库,它的出现让python在数据分析及机器学习方面占了重要的一部分&#…...
【高效开发工具系列】PlantUML入门使用
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
【第三节:微信小程序 3、app.js配置】微信小程序入门,以思维导图的方式展开3
目录 提供了2个函数: app.js配置 【第三节:微信小程序 3、app.js配置】微信小程序入门,以思维导图的方式展开3 提供了2个函数: app() getApp() --------------------------- app.js配置 App() 功能 Ap…...
Vue 或者 React 中,什么情况下会用 Es6 的 Class 类
// 问个问题,一般在 Vue 或者 React中 // 在框架具备很多组件通讯技术或者js语法支持的情况下,什么情况下会用 Es6 的 Class类?在Vue或React中,通常会在以下情况下使用ES6的Class类: 复杂组件或模块: 当需要构建较为复…...
【Android】Android Framework系列--Launcher3各启动场景源码分析
Android Framework系列–Launcher3各启动场景源码分析 Launcher3启动场景 Launcher3是Android系统提供的默认桌面应用(Launcher),它的源码路径在“packages/apps/Launcher3/”。 Launcher3的启动场景主要包括: 开机后启动:开机时ÿ…...
【Qt开发流程】之拖放操作1:介绍
描述 Drag and drop 提供了一种简单的可视化机制,用户可以使用它在应用程序之间和应用程序内部传输信息。拖放的功能类似于剪贴板的剪切和粘贴机制。 本文描述了基本的拖放机制,并概述了在自定义控件中启用该机制的方法。Qt的许多控件也支持拖放操作&a…...
招募引流模式是实体门店吸引顾客的一种有效策略
在如今激烈的市场竞争和庞大的客户需求中,应该采取什么样的方式来应对,才能找到自己的一席之地。招募引流模式是实体门店吸引顾客的一种有效策略,通常招募体验官或合作伙伴,让他们协助门店进行推广活动,达到增加客流量…...
macos安装小软件 cmake
一,cmake下载主页 Download CMake 二,下载,解压,配置,编译,安装 0. 假设macos中已经存在了 clang和make工具 1. 通过网页下载最新的稳定版 cmake***.tar.gz 源代码 2. tar zxf cmake***.tar 3. cd cmake***…...
思伟老友记 | 厦门路桥翔通海砼建材有限公司与思伟软件携手走过23年
23年 感恩相伴 携手成长 2001年-2023年,厦门路桥翔通海砼建材有限公司已携手上海思伟软件有限公司走过23年。从最初的半手动生产模式到如今的自动生产一体化系统,海砼公司通过思伟软件生产混凝土累计超过1000万m,思伟软件则借助海砼公司的实…...
SpringCloud 微服务全栈体系(十七)
第十一章 分布式搜索引擎 elasticsearch 七、搜索结果处理 搜索的结果可以按照用户指定的方式去处理或展示。 1. 排序 elasticsearch 默认是根据相关度算分(_score)来排序,但是也支持自定义方式对搜索结果排序。可以排序字段类型有&#…...
基于ThinkPHP8 + Vue3 + element-ui-plus + 微信小程序(原生) + Vant2 的 BBS论坛系统设计【PHP课设】
一、BBS论坛功能描述 我做的是一个论坛类的网页项目,每个用户可以登录注册查看并发布文章,以及对文章的点赞和评论,还有文件上传和个人签名发布和基础信息修改,管理员对网站的数据进行统计,对文章和文件的上传以及评论…...
苹果cms搭建教程附带免费模板
准备工作: 一台服务器域名源码安装好NGINX+PHP7.0+MYSQL5.5 安装php7.0的扩展,fileinfo和 sg11,不安装网站会搭建失败。 两个扩展都全部安装好了之后 点击-服务-重载配置 这样我们的网站环境就配置完成啦 下载苹果cms 苹果cms程序github链接:选择mac10!下载即可 http…...
RAGFlow实战:从零基础到构建企业级AI知识库
在2026年的今天,大模型(LLM)已经不再是新鲜事,但如何将这些“通才”模型转化为企业内部的“专才”,依然是技术落地的核心痛点。检索增强生成(RAG)技术应运而生,而RAGFlow作为一款开源…...
AI时代新型的项目管理应该是什么样的?嗣
AI训练存储选型的演进路线 第一阶段:单机直连时代 早期的深度学习数据集较小,模型训练通常在单台服务器或单张GPU卡上完成。此时直接将数据存储在训练机器的本地NVMe SSD/HDD上。 其优势在于IO延迟最低,吞吐量极高,也就是“数据离…...
【PHP 8.9 纤维协程实战黄金手册】:20年架构师亲授高并发服务重构的5大避坑法则
第一章:PHP 8.9 纤维协程的底层机制与演进本质PHP 8.9 并非官方发布的正式版本(截至 PHP 官方最新稳定版为 8.3),但本章所探讨的“纤维协程”概念,实为对 PHP 8.1 引入的 Fiber 类、经 8.2/8.3 持续优化后,…...
基于注意力流的鲁棒信息隐写方法:从扩散隐写到Attention Flow的新探索
在多媒体信息安全领域,图像隐写一直是一个兼具理论深度与应用价值的重要研究方向。近年来,随着深度学习的发展,隐写方法逐渐从传统的像素级嵌入(如LSB、DCT、DWT)演进到基于神经网络的隐写模型,再到当前快速…...
intv_ai_mk11企业应用:法务合同审查要点提取+风险条款标红提示自动化流程
intv_ai_mk11企业应用:法务合同审查要点提取风险条款标红提示自动化流程 1. 企业法务合同审查的痛点 企业法务部门每天需要处理大量合同文件,传统人工审查方式存在几个明显痛点: 效率低下:一份10页的合同通常需要30-60分钟人工…...
Linux 线程:从虚拟地址空间到 POSIX 线程控制全解析
前言在 Linux 系统编程与操作系统原理中,线程是并发执行的核心单元,而虚拟地址空间与分页机制是线程共享资源、轻量化运行的底层基石。本文将从线程本质、内存管理原理、进程线程对比、POSIX 线程控制、地址空间布局到线程封装,层层拆解 Linu…...
中央企业如何借助数智平台推动技术应用与创新
观点作者:科易网-国家科技成果转化(厦门)示范基地一、现状概述:成效与短板 中央企业在我国科技创新体系中占据核心地位,其技术成果转化效率直接关乎国家产业链韧性和产业升级进程。近年来,随着数字化浪潮席…...
2025河北石家庄/邯郸唐山机械互动屏设计如何重塑展厅叙事
你是否曾站在展厅里,看着墙上静态的文字与图片,心里却渴望“走进”故事里?或是带着孩子观展,却难以让他对玻璃后的文物投去好奇的一瞥?传统展厅正在经历一场静默的革命——当机械的精密与屏幕的智能相遇,展…...
window 10 主机安装ubuntu22 系统
准备工作 下载ubuntu22镜像 使用ubuntu_server_220405时,当在/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:自动化生成周报并邮件发送实战 1. 为什么选择这个组合方案 作为一位长期被周报折磨的开发者,我一直在寻找能解放双手的自动化方案。传统模板化周报工具缺乏灵活性,而纯手工编写又耗时费力。直到发现OpenClaw与百川…...
