3-哈希表-51-四数相加 II-LeetCode454

3-哈希表-51-四数相加 II-LeetCode454

LeetCode: 题目序号454

更多内容欢迎关注我(持续更新中,欢迎Star✨)

Github:CodeZeng1998/Java-Developer-Work-Note

技术公众号:CodeZeng1998(纯纯技术文)

生活公众号:好锅(Life is more than code)

CSDN: CodeZeng1998

其他平台:CodeZeng1998好锅

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
    /*** 四数相加 II** @param nums1 数组一* @param nums2 数组二* @param nums3 数组三* @param nums4 数组四* @return 四个数字各一个数相加等于0 的数量* @author CodeZeng1998*/public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {int count = 0;Map<Integer, Integer> firstAndSecondArraySumAndCountMap = new HashMap<>();for (int i = 0; i < nums1.length; i++) {for (int j = 0; j < nums2.length; j++) {if (!firstAndSecondArraySumAndCountMap.containsKey(nums1[i] + nums2[j])) {firstAndSecondArraySumAndCountMap.put(nums1[i] + nums2[j], 1);} else {firstAndSecondArraySumAndCountMap.put(nums1[i] + nums2[j],firstAndSecondArraySumAndCountMap.get(nums1[i] + nums2[j]) + 1);}}}for (int i = 0; i < nums3.length; i++) {for (int j = 0; j < nums4.length; j++) {if (firstAndSecondArraySumAndCountMap.containsKey(-nums3[i] - nums4[j])) {count += firstAndSecondArraySumAndCountMap.get(-nums3[i] - nums4[j]);}}}return count;}

ChatGPT:

提供的Java代码定义了一个方法 fourSumCount,用于计算有多少个元组 (i,j,k,l)(i, j, k, l)(i,j,k,l) 满足 nums1[i] + nums2[j] + nums3[k] + nums4[l] = 0

以下是代码工作原理的逐步解释:

  1. 方法签名和变量
    • 方法 fourSumCount 接受四个整数数组 nums1nums2nums3nums4 作为输入,返回一个整数。
    • 初始化一个计数器 count 用于记录有效元组的数量。
    • 创建一个名为 firstAndSecondArraySumAndCountMapHashMap,用于存储 nums1nums2 元素的和及其频率。
  2. 第一个循环 - 构建HashMap
    • 外层循环遍历 nums1 的所有元素,内层循环遍历 nums2 的所有元素。
    • 对于每一对元素 (nums1[i]nums2[j]),计算它们的和。
    • 如果此和不在map中作为键存在,则将其添加到map中,值为1(表示第一次出现)。
    • 如果此和已经是map中的键,则将其值(频率)加1。
  3. 第二个循环 - 查找匹配的和
    • 另一对嵌套循环遍历 nums3nums4 的所有元素。
    • 对于每一对元素 (nums3[i]nums4[j]),计算它们的负和(-nums3[i] - nums4[j])。
    • 如果此负和在 firstAndSecondArraySumAndCountMap 中作为键存在,意味着存在 nums1nums2 的和,加上当前 nums3nums4 的和结果为零。
    • 将此键关联的值(这样的对数)加到 count 变量中。
  4. 返回结果
    • 方法返回有效元组的总数量。

454. 4Sum II

Given four integer arrays nums1, nums2, nums3, and nums4 all of length n, return the number of tuples (i, j, k, l) such that:

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

Example 1:

Input: nums1 = [1,2], nums2 = [-2,-1], nums3 = [-1,2], nums4 = [0,2]
Output: 2
Explanation:
The two tuples are:
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

Example 2:

Input: nums1 = [0], nums2 = [0], nums3 = [0], nums4 = [0]
Output: 1

Constraints:

  • 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

在这里插入图片描述

上图由 Pic 生成

关键词:the city of guangzhou

更多内容欢迎关注我(持续更新中,欢迎Star✨)

Github:CodeZeng1998/Java-Developer-Work-Note

技术公众号:CodeZeng1998(纯纯技术文)

生活公众号:好锅(Life is more than code)

CSDN: CodeZeng1998

其他平台:CodeZeng1998好锅

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

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

相关文章

定时TH1、计数TL1 的计算

定时器模式 通常在模式 1 下&#xff0c;定时器 1 是 16 位定时器&#xff08;2的16次方65536&#xff09;&#xff08;8位256&#xff09;。定时器的计时周期是由 TH1 和 TL1 的组合值决定的。初始值为 65536 − ( T H 1 256 T L 1 ) 65536 - (TH1 \times 256 TL1) 65536…

Spring boot注解学习

1、SpringBootApplication spring boot 核心注解&#xff0c;加在Spring boot 主类之上&#xff0c;是Configuration、EnableAutoConfiguration、ComponentScan 注解的集合。  &#xff08;1&#xff09;Configuration&#xff1a;允许以Bean注解将对象托管给spring容器&#…

基本表的定义:创建表、修改表、删除表

一、创建数据库与打开数据库 学生选课数据库 学生&#xff08;学号&#xff0c;姓名&#xff0c;性别&#xff0c;出生时间&#xff0c;所在系&#xff09; 课程&#xff08;课程编号&#xff0c;课程名&#xff0c;先修课程号&#xff09; 选课&#xff08;学号&#xff0…

Java File IO

Java File IO ~主要介绍四个类 InputStream OutputStream FileReader FileWriter~ InputStream &#xff08;字节流读取File&#xff09; public static void main(String[] args) throws IOException {String filePath "D:\\Javaideaporject\\JavaBaseSolid8\\File\\t…

js调试过程中修改变量值

1.在想要变更的地方添加断点 2.添加监视表达式 3.执行网页代码&#xff0c;当执行到断点处则会停止 4.点击执行下一步&#xff0c;则会执行监视表达式

19、关于加强行政事业单位数据资产管理的通知

党中央有关部门,国务院各部委、各直属机构,全国人大常委会办公厅,全国政协办公厅,最高人民法院,最高人民检察院,各民主党派中央,有关人民团体,各省、自治区、直辖市、计划单列市财政厅(局),新疆生产建设兵团财政局,有关中央管理企业: 为贯彻落实《中共中央 国务…

Linux下打印封装_统计函数执行时间_线程号时间戳打印

统计函数执行时间&#xff08;多线程环境下统计结果不准&#xff09; // 无返回值 #define FUNC_EXEC_TIME_NORET(fun,promote) ({ \ unsigned long long timeDelta 0; \ struct timespec t1 {0}; \ struct timespec t2 {0}; \ clock_gettime(CLOCK_MONOTONIC, &t1); \ …

web3规则改变者:Linea的厉害之处

Linea 的厉害之处 想象一下&#xff0c;Linea 就像是一条神奇的高速公路&#xff0c;它让开车&#xff08;在这里指的是交易&#xff09;变得更快、更便宜&#xff0c;而且还很舒服。Linea 是由一个叫 Consensys 的大公司建造的&#xff0c;它用了一些超级酷的技术&#xff0c…

托盘图标结构体TBBUTTON和TRAYDATA相关说明文章记录

1、托盘图标管理器与跨进程SendMessage &#xff1a;http://www.qingfengju.com/article.asp?id294 2、TrayData 结构详解&#xff1a;http://llll123cccc.blog.163.com/blog/static/316586420105864647151/ 3、Shell Tray Info - Arrange your system tray icons&#xff1…

高考分数查询结果自动推送至微信(卷II)

祝各位端午节安康&#xff01;只要心中无结&#xff0c;每天都是节&#xff0c;开心最重要&#xff01; 在上一篇文章高考分数查询结果自动推送至微信&#xff08;卷Ⅰ&#xff09;-CSDN博客中谈了思路&#xff0c;今天具体实现。文中将敏感信息已做处理&#xff0c;读者根据自…

从零开始精通Onvif之获取设备信息

&#x1f4a1; 如果想阅读最新的文章&#xff0c;或者有技术问题需要交流和沟通&#xff0c;可搜索并关注微信公众号“希望睿智”。 与设备交互的第一步 发现设备之后&#xff0c;与设备进行交互的第一步&#xff0c;是连接上设备&#xff0c;并获取设备的信息。连接设备&#…

FiRa标准之认证流程

在实现FiRa MAC时需要考虑其兼容性&#xff0c;同时对外部而言&#xff0c;如何证明一个UWB设备是否满足FiRa的规范要求&#xff0c;就需要通过一定的组织对相应的设备进行检测、认证。 为此&#xff0c;FiRa联盟已经建立了国际认证程序&#xff0c;制定了验证待检设备&#x…

React+TS前台项目实战(四)-- layout整体布局搭建

文章目录 前言一、Layout组件代码注释说明二、Content全局组件注释说明三、Header基础布局组件1. Header父级组件注释说明2. NavMenu导航子组件详细说明 四、效果展示总结 前言 本文主要讲Layout整体布局的构建以及全局内容盒子Content组件的使用。还包括了导航栏组件的基本封…

【QT】QT6.3新特性,以及使用技巧

Qt 6.3作为Qt框架的一个重要更新&#xff0c;引入了许多新特性和改进&#xff0c;以提高开发效率和应用程序性能。以下是一些使用Qt 6.3的技巧和最佳实践&#xff1a; 利用新模块和特性&#xff1a; 了解并利用Qt 6.3中新增的模块和特性&#xff0c;例如Qt Quick 3D、Qt PDF等&…

未来几年,同样的性能,推理功耗降低为现在的几万分之一,有可能吗

未来几年,同样的性能,推理功耗降低为现在的几万分之一,有可能吗 一.数据二.抓取LLM排行榜,相同的MMLU精度,模型参数量缩减倍数三.其它 有人说未来几年,推理功耗能降低为现在的几万分之一,好奇怎么能做到呢 一.数据 二.抓取LLM排行榜,相同的MMLU精度,模型参数量缩减倍数 import…

spool 管道 小文件 mknod

Spool File In SQL*PLUS in Multiple Small Files ? (Doc ID 2152654.1)​编辑To Bottom In this Document Goal Solution APPLIES TO: Oracle Database - Enterprise Edition - Version 10.2.0.1 to 12.1.0.2 [Release 10.2 to 12.1] Oracle Database Cloud Schema Service…

从零开始搭建Electron项目之运行例程

最好的学习方式就是&#xff1a;给一段能够运行的代码示例。 本文给出了例程资源&#xff0c;以及运行的步骤。 在国内开发electron有一点特别不好&#xff0c;就是如果不爬梯子&#xff0c;下载依赖容易出错。 一、例程资源 到如下路径下载例程到本地。 GitCode - 全球开发者…

32、matlab:基于模板匹配的车牌识别

1、准备工作 1&#xff09;准备材料 车牌字符模板和测试的实验车牌 2&#xff09;车牌字符模板 数字、字母和省份缩写 3&#xff09;测试车牌 四张测试车牌 2、车牌识别实现(已将其嵌入matlab) 1&#xff09;打开APP 找到APP 找到我的APP双击点开 2)界面介绍 包括&am…

C语言考试内容

C语言考试通常会涵盖以下几个主要方面&#xff1a; 1. **基本概念**&#xff1a; - C语言的历史和特点 - C语言的编译过程 - 程序的基本结构&#xff08;包括预处理指令、主函数main()、函数定义等&#xff09; 2. **数据类型和运算符**&#xff1a; - 基本数据类…

一起学习Linux内核模块的知识,为编写复杂的设备驱动做好准备

一、Linux内核模块简介 Linux内核的整体架构非常庞大&#xff0c;包含的组件非常多&#xff0c;如果把所有的功能都编译到内核&#xff0c;有导致生成的内核映像越来越大&#xff0c;同时如果我们要修改现有内核的功能&#xff0c;需要重编内核&#xff0c;效率很低。 有没有…