LeetCode-四数相加-Java

一、题目

给你四个整数数组 nums1nums2nums3 和 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

二、思路分析 

        乍一看很复杂,其实审题干可知,本题统计的是四个数组中和为0的组合数量。这就可以遍历前两个数组,再借助Map来存储前两个数的和及和出现的次数。再遍历后两个数组,寻找后两个数组的和的相反数,为map中存储的前两个数组的数的和的即可。

三、代码

    public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {int result = 0;HashMap<Integer, Integer> map = new HashMap<>();for (int num1 : nums1) {for (int num2 : nums2) {int sum = num1 + num2;map.put(sum, map.getOrDefault(sum, 0) + 1);}}for (int num3 : nums3) {for (int num4 : nums4) {int sum = num3 + num4;result += map.getOrDefault(-sum, 0);}}return result;}

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

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

相关文章

Shell案例之一键部署mysql

1.问题 我认为啊学习就是一个思考的过程&#xff0c;思考问题的一个流程应该是&#xff1a;提出问题&#xff0c;分析问题&#xff0c;解决问题 在shell里部署mysql服务时&#xff0c;我出现一些问题&#xff1a; 1.安装mysql-server时&#xff0c;没有密钥&#xff0c;安装…

普通java web项目集成spring-session

之前的老项目&#xff0c;希望使用spring-session管理会话&#xff0c;存储到redis。 项目环境&#xff1a;eclipse、jdk8、jetty嵌入式启动、非spring项目。 实现思路&#xff1a; 1.添加相关依赖jar。 2.配置redis连接。 3.配置启动spring。 4.配置过滤器&#xff0c;拦…

宏观经济分析应该看哪些指标?

文章目录 1.国内生产总值(GDP)1.1 GDP(国内生产总值)2. 失业率2.1 城镇登记失业率2.2 调查失业率2.3 青年失业率2.4 长期失业率3. 通货膨胀率3.1 CPI(消费者物价指数):3.2 PPI(生产者物价指数):4. 利率4.1 贷款市场报价利率(LPR)4.2 金融机构贷款基准利率4.3 存款基…

L1练习-鸢尾花数据集处理(分类/聚类)

背景 前文&#xff08;《AI 自学 Lesson1 - Sklearn&#xff08;开源Python机器学习包&#xff09;》&#xff09;以鸢尾花数据集的处理为例&#xff0c;本文将完善其代码&#xff0c;在使用 sklearn 的部分工具包基础上&#xff0c;增加部分数据预处理、数据分析和数据可视化…

QUIC 协议的优势

QUIC 协议的优势包括&#xff1a; 快速建立连接&#xff1a;将传输层和加密层的握手合并&#xff0c;减少了连接建立的延迟。QUIC 建连时间大约为 0~1RTT&#xff0c;相比 HTTPS 的 3RTT 建连&#xff0c;具有极大的优势。客户端第一次建连的握手协商需 1RTT&#xff0c;而已建…

Linux 和Windows创建共享文件夹实现文件共享

直接开整 1.Windows下创建共享文件夹share右击-》属性—》共享-》选择所有人-》点击共享 2.共享创建完成后可以使他的共享网络地址或者Windows ip地址-推荐使用Windows ip地址有时候 不知道什么原因他Linux解析不了网络地址 共享网络地址 —共享文件夹share 右击-》属性—》共…

扫普通链接二维码打开小程序

1. 2.新增规则&#xff08;注意下载文件到跟目录下&#xff0c;需要建个文件夹放下载的校验文件&#xff09; 3.发布 ps&#xff1a;发布后&#xff0c;只能访问正式版本。体验版本如果加了 测试链接http://xxx/xsc/10 那么http://xxx/xsc/aa.....应该都能访问 例如aa101 aa…

CMOS晶体管的串联与并联

CMOS晶体管的串联与并联 前言 对于mos管的串联和并联&#xff0c;一直没有整明白&#xff0c;特别是设计到EDA软件中&#xff0c;关于MOS的M和F参数&#xff0c;就更困惑了&#xff0c;今天看了许多资料以及在EDA软件上验证了电路结构与版图的对应关系&#xff0c;总算有点收…

操作系统(6) (Named /Unnamed Semaphore信号量详解)

目录 1: 信号量的基本概念 2: 命名信号量的示例代码 3. 无名信号量&#xff08;Unnamed Semaphore&#xff09; 背景&#xff08;Background&#xff09; 示例代码讲解 初始化无名信号量 线程函数 创建线程并等待完成 销毁信号量 总结 4. 对比 1: 信号量的基本概念 背…

VScode中CMake无高亮(就是没有补全的提示)

在我学的过程中我发现我的CMake是这样的&#xff0c;如下图 但在教学视频里是这样的&#xff08;如下图&#xff09; 这非常的难受&#xff0c;所以疯狂的找&#xff0c;最后是CMake报错有 原因就是&#xff1a;本地没有配置环境变量&#xff0c;解决方法是下一个cmake然后直接…

JS-常用功能

前言 在工作中&#xff0c;有些js功能经常需要用到&#xff0c;但是在真正用的时候&#xff0c;每次都是百度。可能一时半会还找不到正确的。所以这里把经常用到的js功能&#xff0c;汇总一下&#xff0c;后续还会继续完善。 目录 input只能输入0~100&#xff0c;并且是正整…

STM32-CubeIDE用串口通讯

USART串口通讯 一、轮询模式 1.设置所接引脚为UART异步模式 选择完成CTRLS保存。 2.编写测试代码&#xff08;自动发送hello world&#xff09; 在mian函数里面编写代码 原函数 调用函数&#xff0c;需要数据类型一致&#xff0c;使用函数通过串口发送数组里面的数据 打开串…

C++中库和包的区别

在C开发中&#xff0c;“库”&#xff08;Library&#xff09;和“包”&#xff08;Package&#xff09;是两个常见但有不同含义的术语。理解它们之间的区别有助于更有效地管理和使用代码资源。 库&#xff08;Library&#xff09; 定义&#xff1a; 库是预先编译好的代码集合…

延迟队列实现及其原理详解

1.绪论 本文主要讲解常见的几种延迟队列的实现方式&#xff0c;以及其原理。 2.延迟队列的使用场景 延迟队列主要用于解决每个被调度的任务开始执行的时间不一致的场景&#xff0c;主要包含如下场景: 1.比如订单超过15分钟后&#xff0c;关闭未关闭的订单。 2.比如用户可以…

【嵌入式设备】蓝牙鼠标遥控器

今天讲的这个产品也是刚开发的 主要就是可以遥控你的设备&#xff0c;进行一些自动化的操作流程&#xff0c;不需要再一个一个去单独进行操作&#xff0c;举个最简单的例子&#xff0c;比如你需要拨打一个电话号&#xff0c;你是不是需要一个一个数字去按&#xff0c;最终按下…

如果有100万条消息堆积在MQ怎么解决

当 RabbitMQ 中有 100 万条消息堆积时&#xff0c;意味着消息处理速度已经明显落后于消息产生的速度。如果不及时解决&#xff0c;可能会导致系统负载过重、消息处理延迟加剧&#xff0c;甚至系统崩溃。为了解决这种大规模消息堆积问题&#xff0c;可以采取以下几种措施&#x…

如何在Matlab界面中添加日期选择器?

在Matlab界面中添加日期选择器&#xff0c;可以让用户通过图形界面方便地选择日期。Matlab提供了uidatepicker函数&#xff0c;允许用户在App Designer设计的GUI中添加日期选择器组件。以下是如何在Matlab界面中添加日期选择器的详细步骤&#xff1a; 1. 使用App Designer添加…

重写QObjiet虚函数timerEvent()启动定时器

重写QObjiet虚函数timerEvent()启动定时器是一个常见的方法&#xff0c;它允许在Qt应用程序中实现定时功能。下面是一个简单的例子&#xff0c;展示了如何重写timerEvent()并启动定时器&#xff1a; 首先&#xff0c;创建一个继承自QObject的类&#xff0c;并在该类中重写time…

基于springboot+微信小程序校园自助打印管理系统(打印1)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 基于springboot微信小程序校园自助打印管理系统实现了管理员、店长和用户。管理员实现了用户管理、店长管理、打印店管理、打印服务管理、服务类型管理、预约打印管理和系统管理。店长实现…

vue3中报has no default export错误

原因 在同时使用Vetur和Volar插件的Vue2与Vue3项目中&#xff0c;遇到Module has no default export错误。通过在VSCode设置中将vetur.validation.script设为false&#xff0c;可以消除该报错&#xff0c;不影响实际运行。 解决办法 "vetur.validation.script": fa…