leetcode 454. 四数相加 II(哈希表)

给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0。

为了使问题简单化,所有的 A, B, C, D 具有相同的长度 N,且 0 ≤ N ≤ 500 。所有整数的范围在 -228 到 228 - 1 之间,最终结果不会超过 231 - 1 。

例如:

输入:
A = [ 1, 2]
B = [-2,-1]
C = [-1, 2]
D = [ 0, 2]

输出:
2

解释:
两个元组如下:

  1. (0, 0, 0, 1) -> A[0] + B[0] + C[0] + D[1] = 1 + (-2) + (-1) + 2 = 0
  2. (1, 1, 0, 0) -> A[1] + B[1] + C[0] + D[0] = 2 + (-1) + (-1) + 0 = 0

代码

class Solution {public int fourSumCount(int[] A, int[] B, int[] C, int[] D) {Map<Integer,Integer> map=new HashMap<>();int res=0;for(int i=0;i<A.length;i++)for(int j=0;j<B.length;j++)//产生A,B数组相加 所有可能的和,并记录出现次数map.put(A[i]+B[j],map.getOrDefault(A[i]+B[j],0)+1);for(int i=0;i<C.length;i++)//产生c,d数组相加 所有可能的和,并检查map中是否有相加为0的数字for(int j=0;j<D.length;j++)if(map.containsKey(-C[i]-D[j]))res+=map.get(-C[i]-D[j]);return res;}
}

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

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

相关文章

“换标”Intel的穷则思变

成语有云“穷则思变”&#xff0c;用这个词来形容早先的Intel换标也最恰当不过。当然这里“穷”&#xff0c;不是说Intel很贫穷&#xff0c;而是说Intel在自己的产业到了尽头。Intel推产品概念的水平是一流的&#xff0c;虽然某些概念事后被认为是错误的&#xff08;如&#xf…

mysql开发中遇到的坑_mysql优化过程中遇见的坑(mysql优化问题特别注意)

单条查询最后添加 LIMIT 1&#xff0c;停止全表扫描。对于char(4) 或者vachar(4)&#xff0c;无论是中文还是英文都是存储四个字符&#xff0c;注意是字符而不是字节。如果一个字段未int类型&#xff0c;此类型只有0、1两个状态&#xff0c;需要为此建立索引吗&#xff1f;过度…

初级开发人员的缺点_在您作为初级开发人员的第一年获得此建议

初级开发人员的缺点Are you a junior developer embarking on your software development career?您是从事软件开发事业的初级开发人员吗&#xff1f; Or a recent computer science graduate who has recently started a new job?还是最近刚开始从事新工作的计算机科学专业…

Spark日志分析

根据tomcat日志计算url访问了情况&#xff0c;具体的url如下&#xff0c; 要求&#xff1a;区别统计GET和POST URL访问量 结果为&#xff1a;访问方式、URL、访问量 输入文件&#xff1a; 196.168.2.1 - - [03/Jul/2014:23:36:38 0800] "GET /course/detail/3.htm HTTP/1.…

进程、线程和协程的区别

首先&#xff0c;给出“进程、线程和协程”的特点&#xff1a; 进程&#xff1a;拥有自己独立的堆和栈&#xff0c;既不共享堆&#xff0c;也不共享栈&#xff0c;进程由操作系统调度&#xff1b;线程&#xff1a;拥有自己独立的栈和共享的堆&#xff0c;共享堆&#xff0c;不共…

leetcode 493. 翻转对(分治算法)

给定一个数组 nums &#xff0c;如果 i < j 且 nums[i] > 2*nums[j] 我们就将 (i, j) 称作一个重要翻转对。 你需要返回给定数组中的重要翻转对的数量。 示例 1: 输入: [1,3,2,3,1] 输出: 2 代码 class Solution {public int reversePairs(int[] nums) {return getR…

使用brew安装软件

brew 又叫Homebrew&#xff0c;是Mac OSX上的软件包管理工具&#xff0c;能在Mac中方便的安装软件或者卸载软件&#xff0c; 只需要一个命令&#xff0c; 非常方便 brew类似ubuntu系统下的apt-get的功能 阅读目录 安装brew 使用brew安装软件 使用brew卸载软件 使用brew查询软…

mysql 绕过select报错_MySQL注射绕过技巧(三)

在测试一次注入的时候发现过滤了逗号 所以找到这个思路第一次遇到的时候是看key哥挖洞 遇到后就想记录下来正文过滤了逗号 利用join来逐步查询select*from(select 1)a join (select 2)b join (select 3)c;例如下图逐步查询user()user() basediruser() basedir version()也可以…

深入理解javascript

深入理解JavaScript系列&#xff08;1&#xff09;&#xff1a;编写高质量JavaScript代码的基本要点 深入理解JavaScript系列&#xff08;2&#xff09;&#xff1a;揭秘命名函数表达式 深入理解JavaScript系列&#xff08;3&#xff09;&#xff1a;全面解析Module模式 深入理…

spark 并行处理_如何使用Spark集群并行处理大数据

spark 并行处理by Hari Santanam通过Hari Santanam 如何使用Spark集群并行处理大数据 (How to use Spark clusters for parallel processing Big Data) 将Apache Spark的弹性分布式数据集(RDD)与Databricks一起使用 (Use Apache Spark’s Resilient Distributed Dataset (RDD)…

django前后端分离部署

部署静态文件&#xff1a; 静态文件有两种方式1&#xff1a;通过django路由访问2&#xff1a;通过nginx直接访问 方式1&#xff1a; 需要在根目录的URL文件中增加&#xff0c;作为入口 url(r^$, TemplateView.as_view(template_name"index.html")), 在setting中更改静…

Citrix、Microsoft、VMware虚拟桌面之网页接口登录对比

软件环境 Citrix Xendesktop 5.6 Microsoft Windows Server 2008 R2 Hyper-v VMware View client 4.6 首先看citrix的&#xff0c;很早之前Citrix就推出了网页的虚拟桌面和应用程序&#xff0c;默认是单点登录获取桌面 下面是微软的&#xff0c;和citrix很类似&#xff0c; 据我…

leetcode 976. 三角形的最大周长

给定由一些正数&#xff08;代表长度&#xff09;组成的数组 A&#xff0c;返回由其中三个长度组成的、面积不为零的三角形的最大周长。 如果不能形成任何面积不为零的三角形&#xff0c;返回 0。 示例 1&#xff1a; 输入&#xff1a;[2,1,2] 输出&#xff1a;5 示例 2&…

recyclerview 加载fragment_恢复 RecyclerView 的滚动位置

您可能在开发过程中遇到过这种情况&#xff0c;在 Activity/Fragment 被重新创建后&#xff0c;RecyclerView 丢失了它之前保有的滚动位置信息。通常这种情况发生的原因是由于异步加载 Adapter 数据&#xff0c;且数据在 RecyclerView 需要进行布局的时候尚未加载完成&#xff…

4.6.2 软件测试的步骤

系统测试是可有可无的。因为系统测试是和环境结合在一起。系统测试应该是在系统设计或者是需求分析阶段的前一步来完成的。 单元测试它的测试计划是在详细设计阶段完成。所以说单元测试的计划是在详细设计阶段来完成的。 模块接口的测试它保证了测试模块的数据流可以正确地流入…

nodejs调试ndb_如何开始使用NDB调试NodeJS应用程序

nodejs调试ndbNodeJs was released almost 9 years ago. The default debugging process of NodeJs (read Node.js) is quite clumsy. You are likely already aware of the need to add --inspect to the node script with node inspector. It is also dependent on Chrome. T…

初学必读:61条面向对象设计的经验原则

(1)所有数据都应该隐藏在所在的类的内部。(2)类的使用者必须依赖类的共有接口&#xff0c;但类不能依赖它的使用者。(3)尽量减少类的协议中的消息。(4)实现所有类都理解的最基本公有接口[例如&#xff0c;拷贝操作(深拷贝和浅拷贝)、相等性判断、正确输出内容、从ASCII描述解析…

栈,递归

栈的基本操作注意&#xff1a;是从后往前连接的 1 #include <stdio.h>2 #include <Windows.h>3 typedef struct sStack4 {5 int num;6 struct sStack* pnext;7 }Stack;8 void push(Stack **pStack,int num);9 int pop(Stack **pStack); 10 BOOL isEmpty(St…

mysql集群多管理节点_项目进阶 之 集群环境搭建(三)多管理节点MySQL集群

多管理节点MySQL的配置很easy&#xff0c;仅须要改动之前的博文中提高的三种节点的三个地方。1)改动管理节点配置打开管理节点C:\mysql\bin下的config.ini文件&#xff0c;将当中ndb_mgmd的相关配置改动为例如以下内容&#xff1a;[ndb_mgmd]# Management process options:# Ho…

leetcode 767. 重构字符串(贪心算法)

给定一个字符串S&#xff0c;检查是否能重新排布其中的字母&#xff0c;使得两相邻的字符不同。 若可行&#xff0c;输出任意可行的结果。若不可行&#xff0c;返回空字符串。 示例 1: 输入: S “aab” 输出: “aba” 代码 class Solution {public String reorganizeStri…