day27【LeetCode】454. 四数相加 II
day27【LeetCode】454. 四数相加 II
1.题目描述
附上题目链接:四数相加 II
给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足:
0 <= i, j, k, l < nnums1[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
2.题解
c++
(写法一)
class Solution {
public:int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) {unordered_map<int,int> mymap;int count=0;for(int a : nums1){for(int b : nums2){mymap[a+b]++;}}for(int c:nums3){for(int d:nums4){if(mymap.find(0-(c+d)) != mymap.end()){count += mymap[0-(c+d)];}}}return count;}
};
解读:
- 定义了一个
unordered_map<int, int>类型的哈希表 mymap,用于存储两个数组中元素的和以及对应的出现次数。 - 遍历 nums1 和 nums2 两个数组,将两个数组中元素两两相加的结果存入哈希表 mymap 中。
- 再次遍历 nums3 和 nums4 两个数组,在遍历过程中,判断哈希表中是否存在 -(c+d) 这个值,若存在,则将对应的数量累加到 count 中。
- 最终返回 count,即满足条件的两两相加等于 0 的组合数量。
(写法二)
public:int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) {unordered_map<int,int> mymap;int count=0;for(int a : nums1){for(int b : nums2){mymap[a+b]++;}}for(int c:nums3){for(int d:nums4){if(mymap.count(-c-d)){count += mymap[-c-d];}}}return count;}
};
本质是一样的,只不过在寻找对应数的时候,用的是count函数 以及简化了写法。
python
(版本一)使用字典
class Solution:def fourSumCount(self, nums1: List[int], nums2: List[int], nums3: List[int], nums4: List[int]) -> int:mymap = dict()count = 0for a in nums1:for b in nums2:if a+b in mymap:mymap[a+b] += 1else:mymap[a+b] = 1for c in nums3:for d in nums4:if -c-d in mymap:count += mymap[-c-d]return count
第一个if那儿,可以换成下面这种写法,一行搞定。
mymap[a+b] = mymap.get(a+b, 0) + 1
(版本二)使用defaultdict
class Solution:def fourSumCount(self, nums1: List[int], nums2: List[int], nums3: List[int], nums4: List[int]) -> int:rec = defaultdict(int)count = 0for i in nums1:for j in nums2:rec[i+j] += 1for i in nums3:for j in nums4:count += rec.get((-i-j),0)return count
(版本三)使用counter
class Solution:def fourSumCount(self, nums1: List[int], nums2: List[int], nums3: List[int], nums4: List[int]) -> int:rec = collections.Counter(i+j for i in nums1 for j in nums2)count = 0for i in nums3:for j in nums4:if -i-j in rec:count += rec[-i-j]return count
ok了,就到这里叭~~~
如果觉得作者写的不错,求给博主一个大大的点赞支持一下,你们的支持是我更新的最大动力!
如果觉得作者写的不错,求给博主一个大大的点赞支持一下,你们的支持是我更新的最大动力!
如果觉得作者写的不错,求给博主一个大大的点赞支持一下,你们的支持是我更新的最大动力!
相关文章:
day27【LeetCode】454. 四数相加 II
day27【LeetCode】454. 四数相加 II 1.题目描述 附上题目链接:四数相加 II 给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足: 0 < i, j, k, l < nnums1[i] …...
UE5 UE4 不同关卡使用Sequence动画
参考自:关于Datasmith导入流程 | 虚幻引擎文档 (unrealengine.com) 关卡中的Sequence动画序列,包含特定关卡中的Actor的引用。 将同一个Sequcen动画资源放入其他关卡,Sequence无法在新关卡中找到相同的Actor,导致报错。 Sequen…...
【JAVA日志】关于日志系统的架构讨论
目录 1.日志系统概述 2.环境搭建 3.应用如何推日志到MQ 4.logstash如何去MQ中取日志 5.如何兼顾分布式链路追踪 1.日志系统概述 关于日志系统,其要支撑的核心能力无非是日志的存储以及查看,最好的查看方式当然是实现可视化。目前市面上有成熟的解决…...
云计算与边缘计算:有何不同?
公共云计算平台可以帮助企业充分利用全球服务器来增强其私有数据中心。这使得基础设施能够扩展到任何位置,并有助于计算资源的灵活扩展。混合公共-私有云为企业计算应用程序提供了强大的灵活性、价值和安全性。 然而,随着分布在全球各地的实时人工智能应…...
「连载」边缘计算(二十)02-23:边缘部分源码(源码分析篇)
(接上篇) EdgeCore之devicetwin 前面对EdgeCore组件的edged功能模块进行了分析,本节对EdgeCore组件的另一个功能模块devicetwin进行剖析,包括devicetwin的struct调用链剖析、devicetwin的具体逻辑剖析、devicetwin的缓存机制剖析…...
Swagger接口文档管理工具
Swagger 1、Swagger1.1 swagger介绍1.2 项目集成swagger流程1.3 项目集成swagger 2、knife4j2.1 knife4j介绍2.2 项目集成knife4j 1、Swagger 1.1 swagger介绍 官网:https://swagger.io/ Swagger 是一个规范和完整的Web API框架,用于生成、描述、调用和…...
关于HTML5表单验证的方法教程
简介 HTML5表单验证是一种在客户端对用户输入进行验证的方法,可以有效地减少对于服务器端验证的依赖。通过使用HTML5表单验证,可以为用户提供实时的错误提示和更好的用户体验。本教程将介绍如何在HTML5中使用各种验证属性和技术来实现表单验证。 基本表…...
.NET生成MongoDB中的主键ObjectId
前言 因为很多场景下我们需要在创建MongoDB数据的时候提前生成好主键为了返回或者通过主键查询创建的业务,像EF中我们可以生成Guid来,本来想着要不要实现一套MongoDB中ObjectId的,结果发现网上各种各样的实现都有,不过好在阅读C#…...
BeautifulSoup+xpath+re+css简单复习+新的scrapy的学习
1.BeautifulSoupsoup BeautifulSoup(html,html.parser)all_icosoup.find(class_"DivTable") 2.xpath trs resp.xpath("//tbody[idcpdata]/tr") hong tr.xpath("./td[classchartball01 or classchartball20]/text()").extract() 这个意思是找…...
Python爬虫实战:从API获取数据
引言 在现代软件开发中,API已经成为获取数据的主要方式之一。API允许不同的软件应用程序相互通信,共享数据和功能。在本文中,我们将学习如何使用Python从API获取数据,并探讨其在实际应用中的价值。 目录 引言 二、API基础知识 …...
音频转换器哪个好?3款电脑软件+3款手机应用
在当今的数字时代,音频转换已成为许多用户日常的需求。为了帮助您找到最佳的音频转换工具,我们将介绍3款电脑软件和3款手机应用。这些工具都各有特点,能够满足不同用户的需求。 1.电脑软件篇 1.1金舟音频大师 金舟音频大师是一款多功能的音…...
惯性导航 | 运动学---运动模型
惯性导航 | 运动学---运动模型 IMU系统的运动学 IMU系统的运动学 惯性测量单元(IMU)已经非常普及了。我们在绝大多数电子设备中都能找到IMU:车辆、手机、手表、头盔,甚至足球当中都内置了IMU。它们的体积很小,安装在设…...
Java Web(十一)--JSON Ajax
JSON JSon在线文档: JSON 简介 JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。轻量级指的是跟xml做比较。数据交换指的是客户端和服务器之间业务数据的传递格式。 它基于 ECMAScript (W3C制定的JS规范)的一个子集,采…...
GL/gl.h: No such file or directory(CentOS8 QT5.12.12)
1.问题描述 新建的QT工程,出现如下问题: GL/gl.h: No such file or directory 2.原因分析 centos系统里面缺少opengl库 3.解决方法 运行命令: yum install mesa-libGL -devel -y...
【外设篇】-显示器
显示屏是一种电光转换工具,现在市面上的显示器都是LCD(Liquid Crystal Display,液晶显示器) 显示器参数介绍 对比度 是指画面黑与白的比值,对比度越高能使色彩表现越丰富,对比度越高,显示器的…...
可视化图文报表
Apache Echarts介绍 Apache Echarts是一款基于Javascript的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。 官网:Apache ECharts 入门案例: <!DOCTYPE html> <html>…...
CW023A-H035 CW023A-R230铜合金硬度材质书
CW023A-H035 CW023A-R230铜合金硬度材质书C2100W-O、C2680TWS-OL、C2200W-1/2H、C2800TS-O 、C2800T-H、C2800T-1/2H、C2700TS-O、C4430T-O、C2700T-O、C2700T-H、C2700T-OL、C2800TS-1/2H、C2800T-OL、C2700-O、C2800TS-H、C2700-H、C2700T-1/2H、C2600TS-1/2H、C2700-1/2H、C…...
Ribbon负载均衡:提升应用性能与可靠性的秘密武器(一)
本系列文章简介: 本系列文章将深入探讨Ribbon负载均衡的工作原理、应用场景和实践经验,帮助大家更好地理解和应用这一强大的技术。通过合理配置和优化Ribbon负载均衡,您可以为您的应用带来更高的性能和可靠性,从而获得竞争优势并满…...
python递归算法
递归算法 一、嵌套调用的过程二、递归的基本原则1、递归的基本原则2、无限递归调用3、正常递归调用4、阶乘问题5、力扣:231. 2 的幂6、力扣面试题 08.05. 递归乘法7、力扣、326. 3 的幂8、力扣342. 4的幂 一、嵌套调用的过程 def show1():print("show 1 run s…...
azure devops工具实践分析
对azure devops此工具的功能深挖,结合jira的使用经验的分析 1、在backlog的功能描述,可理解为需求项,这里包括了bug,从开发的角度修复bug也是个工作项,所以需求的范围是真正的需求(开发接收到的已经确认的…...
OV5640图像拖影?帧率不稳?可能是你的PCLK没配对!附调试心得
OV5640图像拖影与帧率不稳的PCLK调试实战指南 当你在嵌入式项目中集成OV5640摄像头模组时,是否遇到过这样的场景:硬件连接一切正常,驱动程序也能跑通,但实际采集到的图像却出现拖影、撕裂或帧率跳变?作为一款广泛应用…...
如何5分钟掌握暗黑2存档编辑:终极可视化工具完全指南
如何5分钟掌握暗黑2存档编辑:终极可视化工具完全指南 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor 还在为复杂的暗黑破坏神2存档编辑而烦恼吗?告别繁琐的十六进制操作,d2s-editor为你带来了…...
番茄小说下载器完整指南:打造个人离线图书馆的终极解决方案
番茄小说下载器完整指南:打造个人离线图书馆的终极解决方案 【免费下载链接】Tomato-Novel-Downloader 番茄小说下载器不精简版 项目地址: https://gitcode.com/gh_mirrors/to/Tomato-Novel-Downloader 你是否曾经在地铁里信号断断续续,想看的章节…...
5个理由告诉你:为什么GalForUnity是Unity文字游戏开发的终极解决方案
5个理由告诉你:为什么GalForUnity是Unity文字游戏开发的终极解决方案 【免费下载链接】GalForUnity 一个为Unity开发的文字游戏开发插件,采用可视化的工作流,同样也可以高度自定义,他同时支持Live2D 项目地址: https://gitcode.…...
S2-Pro Java面试题深度解析与模拟面试应用
S2-Pro Java面试题深度解析与模拟面试应用 1. 为什么需要智能化的Java面试辅助系统 在技术招聘中,Java岗位的面试往往涉及广泛的知识点,从基础语法到并发编程,从JVM原理到框架源码。传统面试准备方式存在几个明显痛点: 知识覆盖…...
告别迷茫!手把手教你用Keil5为STM32F407搭建第一个工程(附标准库文件搬运指南)
STM32F407工程搭建实战:从零构建标准库工程框架 第一次接触STM32开发时,面对官方固件库中密密麻麻的文件,很多初学者都会感到无从下手。本文将带你深入理解STM32F407标准库工程的结构设计,手把手教你如何合理组织工程目录&#x…...
MusicFree插件系统:3步构建你的终极免费音乐播放器
MusicFree插件系统:3步构建你的终极免费音乐播放器 【免费下载链接】MusicFreePlugins MusicFree播放插件 项目地址: https://gitcode.com/gh_mirrors/mu/MusicFreePlugins MusicFree插件系统是一个革命性的开源项目,为音乐爱好者提供了完全免费、…...
Switch手柄电脑连接实战指南:BetterJoy高效解决方案
Switch手柄电脑连接实战指南:BetterJoy高效解决方案 【免费下载链接】BetterJoy Allows the Nintendo Switch Pro Controller, Joycons and SNES controller to be used with CEMU, Citra, Dolphin, Yuzu and as generic XInput 项目地址: https://gitcode.com/gh…...
智能代码生成兼容性验证实战手册(2024企业级落地白皮书)
第一章:智能代码生成兼容性验证的定义与价值边界 2026奇点智能技术大会(https://ml-summit.org) 智能代码生成兼容性验证,是指在模型输出代码后,系统性评估其在目标运行环境(如特定语言版本、依赖库约束、安全策略、构建工具链&a…...
基于SenseVoice-Small的会议语音实时转写系统开发
基于SenseVoice-Small的会议语音实时转写系统开发 企业会议效率低、纪要整理耗时耗力?试试用AI语音转写技术让会议记录自动化,实时生成精准字幕和结构化纪要。 1. 会议语音转写的实际痛点 日常工作中,会议是最常见的沟通场景,但会…...
