454.四数相加

给你四个整数数组 nums1nums2nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足:

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

方法一:

双层for循环,将nums1、nums2的所有元素和的可能求出来,用<key, value>表示<sum,sum出现的次数>

再次双层for时,nums3、nums4和与nums1、nums2相反时,取出这个<sum出现的次数>,将这些<sum出现的次数>求和到ans中,返回即可。

public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4){Map<Integer, Integer> map1 = new HashMap<>();int n = nums1.length;for(int i = 0; i < n; i++){for(int j = 0; j < n; j++){int sum = nums1[i] + nums[j];if(map1.containsKey(sum)){ int value = map1.get(sum)map1.put(sum, ++value);} else {map1.put(sum, 1);}}}int ans = 0;for(int i = 0; i < n; i++){for(int j = 0; j < n; j++){int sum = ( nums3[i] + nums4[j] ) * (-1);if(map1.containsKey(sum)) ans += map1.get(sum);}}return ans;
}

简化:

public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {// 计算nums1 nums2和有哪些种,并记录每种的次数Map<Integer, Integer> map1 = new HashMap<>();int n = nums1.length;for(int i : nums1){for(int j : nums2){int sum = i + j;// ket - sum   value --次数map1.put(sum, map1.getOrDefault(sum, 0) + 1 );// map1.getOrDefault(sum, 0) + 1 // 如果存在sum这个key就返回它的value,不存在就返回0// +1 代表,如果存在sum这个key就value++,不存在就加入一个,value设置为1// if(map1.containsKey(sum)){//     int value =  map1.get(sum);//     map1.put(sum, ++value);// } else {//     map1.put(sum, 1);// }}}int ans = 0;//Map<Integer, Integer> map2 = new HashMap<>();for(int i : nums3){for(int j : nums4){int sum = -i - j;if(map1.containsKey(sum)) ans += map1.get(sum);}}return ans;
}

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

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

相关文章

KY115 后缀字串排序

描述&#xff1a; 对于一个字符串&#xff0c;将其后缀子串进行排序&#xff0c;例如grain 其子串有&#xff1a; grain rain ain in n 然后对各子串按字典顺序排序&#xff0c;即&#xff1a; ain,grain,in,n,rain 输入描述&#xff1a; 每个案例为一行字符串。 输出描述&…

JS的Document属性和方法

在javascript中&#xff0c;document对象是一个非常重要的全局对象&#xff0c;它代表整个html文档。你可以通过document对象来访问和修改html文档的内容和结构。以下是一些常见的document属性和方法&#xff1a; 属性 1、document.title&#xff1a;获取或设置文档的标题&am…

HTML 特殊元素:展示PDF、展示JSON 数据

<pre> 标签 (preformatted text) <pre> 标签用来表示预格式化的文本内容 在页面数据展示时&#xff0c;后端返回了一段未经处理的JSON 数据&#xff0c;将这段数据在页面正常展示&#xff0c;让可读性更高。 {/"project": {/ "title": "…

TSP问题消除子环

个人感觉看这一个就够了&#xff01;&#xff01;&#xff01; 优化│TSP中两种不同消除子环路的方法及callback实现&#xff08;Python调用Gurobi求解&#xff09; 刘兴禄运筹学修炼日记&#xff1a;TSP中两种不同消除子环路的方法及callback实现&#xff08;Python调用Guro…

sentry-cli - error: Failed to load .sentryclirc file from project path

Xcode 15.2 warning sentry-cli - error: Failed to load .sentryclirc file from project path (/Users/zhuhongwei/Desktop/pandabill/.sentryclirc)推荐一下刚上线的 App 熊猫小账本&#xff0c;里面有用到这篇博客讲的内容 熊猫小账本 一个简洁的记账 App&#xff0c;用于…

1、鸿蒙学习-为应用/服务进行签名

针对应用/服务的签名&#xff0c;DevEco Studio为开发者提供了自动签名方案&#xff0c;帮助开发者高效进行调试。也可选择手动方式对应用/服务进行签名&#xff0c;如果使用了需要ACL的权限&#xff0c;需采用手动方式进行签名。 自动签名 说明 使用自动签名前&#xff0c;请…

AI智能报表助手

AI智能报表助手 目标&#xff1a;通过对话一句话智能引导出报表 NL2SQL 自然语言转换为sql 数据集 ATIS&GeoQuery数据集&#xff1a;ATIS数据集来源于机票订阅系统&#xff0c;与美国的地理相关&#xff0c;包含880条问题及对应的SQL语句&#xff0c;属于单一领域但上…

C++ 【深基3.习8】三角形分类

文章目录 一、题目描述【深基3.习8】三角形分类题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 样例 #3样例输入 #3样例输出 #3 样例 #4样例输入 #4样例输出 #4 提示 二、参考代码 一、题目描述 【深基3.习8】三角形分类 题目描述 给…

闭包机制的底层实现原理

说明:此次分享不涉及ES6的let,const,块级作用域,这些其实都是对本次分享内容的扩展。 闭包的重要性 JS的内功心法,闭包是JavaScript中非常重要的核心概念,关系着JS里很多核心的机制,理解了它,很多问题都会迎刃而解,不理解闭包用JS永远像隔着一层窗户纸。 前端发展日新…

【MySQL】学习和总结使用列子查询查询员工工资信息

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-5odctDvQ0AHJJc1C {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

中国(京津冀)太阳能光伏推进大会暨展览会

中国(京津冀)太阳能光伏推进大会暨展览会是一个旨在促进太阳能光伏产业的发展的重要活动。该活动旨在加大对太阳能光伏的投资和支持&#xff0c;推动太阳能光伏技术的创新和应用&#xff0c;促进太阳能光伏产业的规模化发展。 此次大会暨展览会将为太阳能光伏行业相关企业提供一…

LeetCode刷题记录——day2

https://leetcode.cn/problems/product-of-array-except-self/description/?envTypestudy-plan-v2&envIdtop-interview-150 问题在于不使用除法并且空间复杂度为O(1)&#xff0c;当第一次从头开始遍历时由于不知道后续数组元素是什么&#xff0c;所以无法得到答案&#xf…

Python 枚举(Python Enumerations)

Python 枚举&#xff08;Enumerations&#xff09;是一种用于创建命名的常量集合的方法。它提供了一种更好地组织代码、增加可读性和可维护性的方式&#xff0c;特别是在需要表示一组相关常量时。 Python 的枚举是通过 enum 模块实现的&#xff0c;它在 Python 3.4 版本之后成…

【Linux】Linux基本开发工具(yum) (vi/vim)的使用

本文章内容&#xff1a; 学习yum工具&#xff0c;进行软件安装掌握vim编辑器使用 Linux 软件包管理器 yum 什么是软件包 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序.但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成…

es 聚合操作(一)

前言 Elasticsearch除搜索以外&#xff0c;提供了针对ES 数据进行统计分析的功能。聚合(aggregations)可以让我们极其方便的实现对数据的统计、分析、运算。例如&#xff1a; 衣服品牌的受欢迎程度这些衣服的平均价格、最高价格、最低价格这些衣服的每天、每月销量如何 使用…

产品推荐 | 基于Xilinx Zynq UltraScale+打造的仙女座 Andromeda FPGA核心板

1、产品概述 仙女座Andromeda XZU65片上系统&#xff08;SoC&#xff09;核心板通过结合高端Xilinx Zynq UltraScale™ MPSoC系列芯片和高速DDR4 ECC SDRAM、eMMC flash、双QSPI flash、双Gigabit Ethernet PHY、USB 3.0形成了一个完整的、功能强大的嵌入式处理系统。得益于大…

Rhino与Revit API之间的转换

你好&#xff0c;我是九哥~ 最近发现Rhino.Inside.Revit的API手册更新了&#xff0c;终于可以开心的写RIR代码了&#xff0c;小伙伴快去试试吧&#xff0c;地址如下&#xff1a; https://www.rhino3d.com/inside/revit/1.0/reference/rir-api 今天我们先来聊聊 Rhino 与 Rev…

ARM:汇编点灯

.text .global _start _start: 使能GPIOE和GPIOF的外设时钟 LDR R0,0x50000A28 指定寄存器地址 LDR R1,[R0] 将寄存器原来的数值读取出来&#xff0c;保存到R1中 ORR R1,R1,#(0x3<<4) 将第3/4位设置为1 STR R1,[R0] 将修改后的数值写回设置LED1亮 设置PE10为输出…

Python实战:机器学习算法

本文将详细介绍Python中常用的机器学习算法&#xff0c;包括线性回归、逻辑回归、决策树、随机森林、支持向量机等。 一、引言 机器学习是人工智能的一个重要分支&#xff0c;它使计算机能够从数据中学习并做出决策。Python作为一门流行的编程语言&#xff0c;拥有丰富的机器…