每日一题(LeetCode)----哈希表--四数相加 II

每日一题(LeetCode)----哈希表–四数相加 II

1.题目(454. 四数相加 II)

给你四个整数数组 nums1nums2nums3nums4 ,数组长度都是 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

2.解题思路

思路一:分组+哈希法

1.一共有四组整数数组,我们每两个为一组(这里我们以前两组整数数组为一组,后两组整数数组为一组)

2.创建两个哈希表(这里用unordered_map),两个哈希表的键值都是其组内第一个整数数组中的元素和第二个整数数组中的元素相加所得的数,实值是当前键值的数出现的次数

3.进行遍历,每组中的第一个整数数组的每个数都和第二个整数数组相加一遍,得到的数存入对应的哈希表中

4.定义一个结果变量,遍历其中一个哈希表,每遍历到哈希表中一个元素,我们取出这个哈希表中的实值,然后以0减去当前哈希表中的键值所得到的数作为另一个哈希表中的键值,取出另一个的实值,取出的这两个实值进行相乘然后加到我们的结果变量上即可

3.写出代码

思路一的代码

class Solution {
public:int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) {int length=nums1.size();unordered_map<int,int> ma1;unordered_map<int,int> ma2;for(int i=0;i<length;i++){for(int j=0;j<length;j++){if(ma1.count(nums1[i]+nums2[j])==0){ma1[nums1[i]+nums2[j]]=1;}else{ma1[nums1[i]+nums2[j]]++;}if(ma2.count(nums3[i]+nums4[j])==0){ma2[nums3[i]+nums4[j]]=1;}else{ma2[nums3[i]+nums4[j]]++;}}}int res=0;for(auto v:ma1){if(ma2.count(0-v.first)!=0){res+=v.second*ma2[0-v.first];}}return res;}
};

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

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

相关文章

后端Java日常实习生面试(七牛云2023年11月14日)

面试岗位为&#xff1a;Java 后端开发实习生 面试时长&#xff1a;60分钟 面试时间&#xff1a;2023年11月14日 首先做一下简单的自我介绍吧面试官说先来说一下 Java 基础吧 多态了解吗&#xff1f;&#xff08;了解&#xff0c;一个行为有不同的表现形式&#xff09; 知道…

Vue diff 算法探秘:如何实现快速渲染

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

Spring第三课,Lombok工具包下载,对应图书管理系统列表和登录界面的后端代码,分层思想

目录 一、Lombok工具包下载 二、前后端互联的图书管理系统 规范 三、分层思想 三层架构&#xff1a; 1.表现层 2.业务逻辑层 3.数据层 一、Lombok工具包下载 这个工具包是为了做什么呢&#xff1f; 他是为了不去反复的设置setting and getting 而去产生的工具包 ⚠️工具…

为计算机设计一个完美的思维模型,帮找bug和漏洞,一起来做渗透测试吧 最赚钱的10种思维模型

芒格 如果我不能淘汰自己一年前的思维模型&#xff0c;这一年我就白过了。&#xff08;终身学习&#xff0c;不断迭代自己。&#xff09; 思维模型是什么&#xff0c;有哪些&#xff1f; 思维模型是用来简化和理解复杂现实世界的概念框架。它们是一种思考和解决问题的工具&a…

QT学习_16_制作软件安装包

1、准备软件exe及其运行环境 参考&#xff1a;Qt学习_12_一键生成安装包_江湖上都叫我秋博的博客-CSDN博客 这篇博客记录了&#xff0c;如何用window的脚本&#xff0c;一键生成一个可以免安装的软件压缩包&#xff0c;解压缩后&#xff0c;点击exe文件就可以直接运行。 这一…

国内如何访问github

1 购买一台美国硅谷的服务器 https://account.aliyun.com/login/login.htm?oauth_callbackhttps%3A%2F%2Fecs-buy.aliyun.com%2Fecs%3Fspm%3D5176.8789780.J_4267641240.2.721e45b559Ww1z%26accounttraceid%3Def6b6cc734bc49f896017a234071bfd9bctf 记得配置公网的ip&#xf…

AtCoder Beginner Contest 330 A~F

A.Counting Passes(暴力) 题意&#xff1a; 给定 n n n个学生的分数&#xff0c;以及及格分 x x x &#xff0c;问多少人及格了。 分析&#xff1a; 暴力枚举&#xff0c;依次判断每个学生的分数即可。 代码&#xff1a; #include <bits/stdc.h> using namespace s…

QT之QMediaPlayer的用法

QT之QMediaPlayer的用法 成员函数例程 成员函数 1)setMedia(const QMediaContent &media, QIODevice *stream nullptr) 设置要播放的媒体内容&#xff0c;其中参数media指定了媒体内容&#xff0c;stream参数指定了用于读取媒体的输入设备&#xff08;如文件流&#xff0…

超融合数据中心如何搭建?有哪些优势?

导语 随着全社会数字经济的发展&#xff0c;企业的数字化转型正加速推进。这其中&#xff0c;占据所有企业数量 99.8% 的中小企业&#xff0c;像是社会的毛细血管广泛遍布在各个领域&#xff0c;相对大企业对市场更敏感、决策更灵活。这些因素本应有利于数字化转型&#xff0c…

百科全书-疑惑解答

1.前端技术栈是如何一步步演变到现在vue/react等框架 答&#xff1a; 前端技术栈的演变经历了多个阶段&#xff0c;从最初的静态页面到动态交互的Web应用&#xff0c;再到现代的前端框架如Vue和React。以下是这个演变过程的一些关键节点&#xff1a; 静态页面阶段&#xff1…

Python Subprocess模块

Python的subprocess模块是一个强大的工具&#xff0c;它允许你在Python中执行外部命令&#xff0c;并与其进行交互 1. subprocess模块的基本用法 import subprocess result subprocess.run(["ls", "-l"], capture_outputTrue, textTrue) print(result.st…

Hadoop入门学习笔记

视频课程地址&#xff1a;https://www.bilibili.com/video/BV1WY4y197g7 课程资料链接&#xff1a;https://pan.baidu.com/s/15KpnWeKpvExpKmOC8xjmtQ?pwd5ay8 这里写目录标题 一、VMware准备Linux虚拟机1.1. VMware安装Linux虚拟机1.1.1. 修改虚拟机子网IP和网关1.1.2. 安装…

【智能家居】一、工厂模式实现继电器灯控制

一、用户手册对应的I/O 二、工厂模式实现继电器灯控制 三、代码段 controlDevice.h&#xff08;设备类&#xff09;main.c&#xff08;主函数&#xff09;bathroomLight.c&#xff08;浴室灯&#xff09;bedroomLight.c&#xff08;卧室灯&#xff09;bedroomLight.c&#xff…

python基础练习题库实验7

文章目录 题目1代码实验结果题目2代码实验结果题目3代码实验结果题目总结题目1 编写代码创建一个名为Staff的类和方法__init__,以按顺序初始化以下实例属性: -staff_number -first_name -last_name -email 代码 class Staff:def __init__(self, staff_number, first_name,…

【网络安全】下载并安装 kali 的虚拟机 版本

kali虚拟机版本的下载地址&#xff1a;Get Kali | Kali Linux 下载完成后&#xff0c;解压&#xff0c;双击.vmx打开&#xff0c;即可完成kali在虚拟机中的安装和配置。 默认账户和密码都为kali

Python爬取某电商平台商品数据及评论!

目录 前言 主要内容 1. 爬取商品列表数据 2. 爬取单个商品页面的数据 3. 爬取评论数据 4. 使用代理ip 总结 前言 随着互联网的发展&#xff0c;电商平台的出现让我们的消费更加便利&#xff0c;消费者可以在家里轻松地购买到各种商品。但有时候我们需要大量的商品数据进…

Vue3中的<script setup>和<script>的区别

相同点 在一个 Vue3 单文件组件 (SFC)中&#xff0c;<script setup> 和 <script> 它们各自最多只能存在一个。 不同点 <script setup> 这个脚本块将被预处理为组件的 setup() 函数&#xff0c;这意味着它将为每一个(也可以说每一次)组件实例都执行。 <…

数据库系统原理——备考计划2:数据库系统的概述

前言&#xff1a; 基于课本、上课ppt、复习总结ppt进行一个知识点的罗列&#xff0c;方便后期高效地复习 目录 前言&#xff1a; 一、基本概念 1.数据&#xff1a; &#xff08;1&#xff09;概念&#xff1a; &#xff08;2&#xff09;数据的种类&#xff1a; &#xff08;3&…

YOLOv5算法进阶改进(6)— 更换主干网络之ResNet18

前言:Hello大家好,我是小哥谈。ResNet18是ResNet系列中最简单的一个模型,由18个卷积层和全连接层组成,其中包含了多个残差块。该模型在ImageNet数据集上取得了很好的表现,成为了深度学习领域的经典模型之一。ResNet18的优点是可以解决深度神经网络中梯度消失的问题,使得性…

解决终Linux端中文乱码问题及设置UTF-8编码

简介 当在终端中复制粘贴中文文本时出现乱码问题&#xff0c;可能是因为终端未正确设置 UTF-8 编码。本文将介绍如何通过设置语言环境和字符类型环境&#xff0c;以及选择正确的语言包&#xff0c;来解决这一问题。 步骤&#xff1a; 1. 检查当前终端设置 在终端中运行以下…