【哈希-中等】454. 四数相加 II(多思考)

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
    【代码】
    【Python】
    在这里插入图片描述
class Solution:
    def fourSumCount(self, A: List[int], B: List[int], C: List[int], D: List[int]) -> int:
        cnt_ab=dict()
        for a in A:
            for b in B:
                cnt_ab[a+b]=cnt_ab.setdefault(a+b,0)+1
        cnt=0
        for c in C:
            for d in D:
                if -(c+d) in cnt_ab:
                    cnt+=cnt_ab[-(c+d)]
        return cnt

【简单写法】
在这里插入图片描述

class Solution:
    def fourSumCount(self, A: List[int], B: List[int], C: List[int], D: List[int]) -> int:
        cnt_ab=dict(Counter(a+b for a in A for b in B))
        cnt=0
        for c in C:
            for d in D:
                if -(c+d) in cnt_ab:
                    cnt+=cnt_ab[-(c+d)]
        return cnt
哈希表part02 |454.四数相加II |383. 赎金信|15. 三数之和|8. 四数之和|总结 一般来说哈希表都是用来快速判断一个元素是否出现集合里数组作为哈希表set作为哈希表map作为哈希表经典题目回顾两数之和,三数之和,四数之和这三题都是在一个数组里找到和为target的元素的组合,用哈希法解决了两数之和,用哈希法也可以解决三数之和,四数之和,但是非常麻烦,需要去重导致代码效率很低,所以四数之和,三数之和都推荐使用双指针法而题目四数相加是四个独立的数组,只要找到使得A[i] + B[j] + C[k] + D[l] = 0 的组合的个数就可以,不用考虑重复问题,用哈希法就可以解决。 阅读详情

相关推荐

winhex先add再xor运算脚本

对于winhex当中有着一定的帮助,可以试试

winhex先Add再XOR后的数据恢复

近来经常有网友QQ问我,用winhex修改数据,先Add运算,再XOR运算,这样修改后(加密)的数据如何恢复(还原)?         这个好像是中职(或高职)学生在参加全国数据恢复大赛时的题目。我试着做了一下,下面是过程:         首先创建了一个名为“实验doc文档”,如下图:           用winhex打开这个文件,选定所有字节,作如下运算:

bsmao的专栏 7240

国产麒麟系统下用Rider开发C#桌面应用:从环境配置到Avalonia UI实战

本文详细介绍了在国产麒麟系统上使用JetBrains Rider开发C#桌面应用的完整流程,重点讲解了Avalonia UI框架的实战应用。从环境配置、Rider安装到Avalonia项目创建和UI开发技巧,全面覆盖了在非Windows环境下进行C#开发的关键步骤和优化建议,助力开发者高效构建跨平台桌面应用。

weixin_27791839的博客 387

图文介绍:Winhex的使用教程

一、Winhex的使用用Winhex打开要修改的文件,显示如下界面:任何一个存储在计算机上的文件都可以认为是由最基本的0和1组成的,Winhex便是将这些文件以二进制形式打开。不过显示的时候是十六进制,一位十六进制相当于四位二进制,两位十六进制相当于八位二进制即一个字节,每个字节即对应一个地址。左边那一列是行标,上边那一行是列标,行标和列标便组成了地址。如6BFA3003这个地址,其行标便是6BFA3000,列标为3。想要修改数值,直接键盘输入即可。一个基本常识:对于有多位的十六进制数值而言,存储方式是低位

ttuiop的专栏 1万+

BioEmu:微软黑科技炸场!生成式AI重构蛋白质模拟:千倍效率碾压传统计算,新药研发周期砍半

BioEmu 是微软推出的生成式深度学习系统,可在单个 GPU 上每小时生成数千种蛋白质结构样本,支持模拟动态变化、预测热力学性质,并显著降低计算成本。

士多啤梨先生の博客 1100

unity之——解决利用Jenkins在Windows环境下打包unity工程中的场景为apk包,打包打不出来的问题。并且介绍Jenkins从安装到环境配置,调用unity代码的过程(填坑)!!!!!

今天第一次接触Jenkins,比较头疼。网上的Jenkins配置环境相关的资料比较散乱,并且在Windows平台下相关的配置更是少之又少。我在这里讲一下从Jenkins安装到构建工程。打包unity工程的apk包的过程。 1.首先去Jenkins官网下载安装就不说了,安装完成之后在浏览器中输入http://localhost:8080(默认访问地址)进入Jenkins web界面。进行账号的注册...

cgy56191948的博客 2020

winhex教程

winhex教程 winhex 数据恢复分类:硬恢复和软恢复。所谓硬恢复就是硬盘出现物理性损伤,比如有盘体坏道、电路板芯片烧毁、盘体异响,等故障,由此所导致的普通用户不容易取出里面数据,那么我们将它修好,同时又保留里面的数据或后来恢复里面的数据,这些都叫数据恢复,只不过这些故障有容易的和困难的之分;所谓软恢复,就是硬盘本身没有物理损伤,而是由于人为或者病毒破坏所造成的数...

weixin_34383618的博客 2204

Multisim新手必看:从零搭建数字时钟仿真电路(附完整原理图)

本文详细介绍了如何使用Multisim从零开始搭建数字时钟仿真电路,涵盖晶振电路设计、计数电路实现、校时功能配置等关键步骤。通过完整的原理图和实用技巧,帮助新手快速掌握Multisim仿真设计,实现精准的数字时钟功能。

ios99的博客 330

一刷Day7|454.四数相加II 15. 三数之和 18. 四数之和

难点在于优化遍历过程以提高效率,例如通过剪枝和去重。对数组进行排序,并使用四层嵌套循环结合剪枝和去重技术来寻找符合条件的四元组。核心部分是排序、四层循环的嵌套遍历、剪枝优化和去重。函数对数组进行排序,并使用双指针技术来寻找符合条件的三元组。找出数组中所有唯一的四元组,使得四数之和等于给定的目标值。亮点是使用哈希表来减少查找时间,从而提高算法的效率。本题有4个数组,较四数之和(一个数组),不用去重。库来实现哈希表,以高效地存储和查找数组元素的和。数组中所有不重复的三元组,使得三数之和为零。

2301_78809750的博客 1603

更新3ds时和用读卡器读取传输文件操作不当导致的tf卡损坏无法读取需要格式化时出现的问题以及不想丢失文件并且修复的详细解决方法

前言: 不小心按了同意更新而且tf/sd卡损坏导致了3ds打开后都是出现 Anerror has occurred:(红色的) Failed to apply 1 FIRM patch(es). Press any button to shotdown 这样的画面,按了任意键后就关机,我找了很多资料和大佬的回答解决了这些问题,现在记录一下。 一.不小心按了更新导致上述的画面 原因:是因为系统升级了,但是里面的Luma3DS还没有更新,属于是更新了但没有完全更新的状态。 **修复方法** 1.首先请按

give_me_fish的博客 1万+

从KVM虚拟化到Openstack云化架构综述

目录 摘要 OpenStack的虚拟化技术 OpenStack架构介绍 Nova Swift KeyStone Neutron Glance Cinder Ceilometer Heat 摘要 这两年的工作中,接触到公有云和私有云的项目还不少。起初对于Openstack的了解,仅停留在其几大组件的交互上,如Nova、Neutron、Glance等,以及对各大云厂商功能点上...

liyunpeng229的博客 2051

Java实现 LeetCode 454 四数相加 II

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 。 例如: 输入...

南 墙 1万+

开关电源设计实战:如何用AP值快速选型磁芯(附计算公式推导)

本文为开关电源工程师提供了基于AP值的磁芯快速选型实战指南。文章深入解析了AP值作为磁芯‘功率吞吐量’指标的核心物理意义,并通过详细的公式推导和24W反激电源设计实例,手把手演示如何利用AP值计算公式,结合电流密度、窗口利用率等关键参数,从众多磁芯型号中高效筛选出合适型号,同时强调了选型后的关键校验步骤与常见误区。

weixin_29234239的博客 878

代码随想录算法训练营第七天 |【哈希表】454.四数相加II、383. 赎金信、15. 三数之和、18. 四数之和

一般来说哈希表都是用来快速判断一个元素是否出现集合里。

qq_43714515的博客 2053

13、7自由度机械臂混合逆运动学算法解析

本文介绍了一种针对7自由度机械臂的混合逆运动学算法,通过引入额外参数Φ解决冗余自由度问题,并实现了避障、避免关节超限和扩大工作空间。该方法采用解析逆运动学求解策略,克服了机械臂在奇异位姿时的配置不连续性问题。通过对比实验验证了该算法在腕部关节角度连续性和位姿可达性方面的优越性,同时结合躯干逆运动学显著扩展了机械臂的工作空间。

rgv23456789的博客 238

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

代码随想录day07:哈希表 | 454.四数相加II 、383. 赎金信 、15. 三数之和(重要) 、18. 四数之和

今日算法总结: 主要涉及哈希, 双指针. 三数之和挺难的, 着实是花了不少时间, 务必掌握, 挺有意思的.

2303_77648069的博客 2119

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

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

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

weixin_43873121的博客 1436

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

[LeetCode] day19 454. 四数相加 II

比如nums1={-2,-3}nums2={-2,-3}中两数相加出现了-5 ,可能存在两种情况[0,1]和[1,0] set只能说明存在-5这种情况,但是不能反映出有几种排列。输入:nums1 = [1,2], nums2 = [-2,-1], nums3 = [-1,2], nums4 = [0,2]输入:nums1 = [0], nums2 = [0], nums3 = [0], nums4 = [0]题目中的数字可以变得很大,如果用数组,可能存在元素过少,而下标过大的情况(下标要作为映射);

qq_65173003的博客 1134

DAY7|454.四数相加II、383. 赎金信、15. 三数之和、18. 四数之和

但是我们依旧可以去做剪枝,逻辑变成。本题是使用哈希法的经典题目,而0015.三数之和 ,0018.四数之和 并不合适使用哈希法,因为三数之和和四数之和这两道题目使用哈希法在不超时的情况下做到对结果去重是很困难的,很有多细节需要处理。本题虽然和 两数之和 很像,也能用哈希法,但用哈希法会很麻烦,双指针法才是正解,可以先看视频理解一下 双指针法的思路,文章中讲解的,没问题 哈希法很麻烦。四数之和,和15.三数之和 是一个思路,都是使用双指针法, 基本解法就是在15.三数之和 的基础上再套一层for循环。

weixin_49795728的博客 1414

LeetCode 454 四数相加 II

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 = [

旺崽的博客 2534

leetcode454. 4Sum II(四数相加 II )/哈希

文章目录题目:454. 4Sum II(四数相加 II)基本思想:分组+哈希 题目:454. 4Sum II(四数相加 II) Given four lists A, B, C, D of integer values, compute how many tuples (i, j, k, l) there are such that A[i] + B[j] + C[k] + D[l] is zero. To make problem a bit easier, all A, B, C, D have sam

yyf_blog 505

LeetCode:454. 四数相加 II —— 哈希表为什么叫哈希表~

LeetCode:454. 四数相加 II 给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足: 0

Super algorithm 的博客,技术爱好者。 908

【Leetcode刷题记录】454. 四数相加 II

给你四个整数数组nums1nums2nums3和nums4,数组长度都是n,请你计算有多少个元组题目要求nums1inums2jnums3knums4l==0,类似这道题,可以固定一个元素然后再找其他三个元素,但是这个时候时间复杂度就是On3,因此可以先固定两个元素,然后去寻找另外两个元素,这时时间复杂度就是On2。将题目要求的这个式子nums1inums2jnums3knums4l==0。

m0_72895175的博客 952
上一篇: 【哈希-中等】718. 最长重复子数组(动态规划,复习补充滑动窗口解法)
下一篇: 【哈希-简单】409. 最长回文串
菜菜2022
博客等级 码龄9年 67粉丝 1033原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值