python3四数相加 II

python3四数相加 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

思路

我们可以将四个数组分成两部分,AA 和 BB 为一组,CC 和 DD 为另外一组。

对于 AA 和 BB,我们使用二重循环对它们进行遍历,得到所有 A[i]+B[j]A[i]+B[j] 的值并存入哈希映射中。对于哈希映射中的每个键值对,每个键表示一种 A[i]+B[j]A[i]+B[j],对应的值为 A[i]+B[j]A[i]+B[j] 出现的次数。

对于 CC 和 DD,我们同样使用二重循环对它们进行遍历。当遍历到 C[k]+D[l]C[k]+D[l] 时,如果 -(C[k]+D[l])−(C[k]+D[l]) 出现在哈希映射中,那么将 -(C[k]+D[l])−(C[k]+D[l]) 对应的值累加进答案中。

最终即可得到满足 A[i]+B[j]+C[k]+D[l]=0A[i]+B[j]+C[k]+D[l]=0 的四元组数目。


class Solution:
    def fourSumCount(self, A: List[int], B: List[int], C: List[int], D: List[int]) -> int:
        rst = 0
        dics = {
   }
        for a in A:
            for b in B:
                sum1 = a+b 
                dics[sum1] = dics.get(sum1,0)+1
        for c in C:
            for d in D:
                sum2 = c+d 
                if -sum2 in dics:
                    rst += dics[-sum2]
        return rst
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/100103.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • navicatformysql15永久激活码【在线破解激活】

    navicatformysql15永久激活码【在线破解激活】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
    58
  • redis 如何查看版本

    redis 如何查看版本

    2021年10月27日
    50
  • Vue(10)表单输入绑定v-model「建议收藏」

    Vue(10)表单输入绑定v-model「建议收藏」v-modelv-model指定可以实现表单值与属性的双向绑定。即表单元素中更改了值会自动的更新属性中的值,属性中的值更新了会自动更新表单中的值绑定的属性和事件v-model在内部为不同的输入元

    2022年7月29日
    11
  • Linux上mariadb的安装与配置

    Linux上mariadb的安装与配置yum源安装MySQL和开启设置服务  首先,我们来看看使用yum源安装MySQL的优缺点:  优点:安装方便快捷,安装方式简单  缺点:太过于死板,定死了各个文件的位置1、打开官方网站,上边有各种版本的yum源,找到自己想要的版本设置yum源官网:https://downloads.mariadb.org/mariadb/repositories/2、如果我们使用官网…

    2022年6月6日
    117
  • 详细了解 clientWidth、clientHeight、clientLeft、clientTop 以及几个常用的场景

    详细了解 clientWidth、clientHeight、clientLeft、clientTop 以及几个常用的场景clientLeft、clientHeight、clientWidth、clientHeightclientWidth、clientHeight元素内部宽度和高度,clientLeft、clientTop获取元素内边距边框到边框的距离.大概如下图所示:clientWidth属性表示元素的内部宽度,以像素计。该属性包括内边距,但不包括垂直滚动条(如果有)、边框和外边距。如上图所示,计算方式为,分为如下两种:存在垂直滚动条 contentwidth+paddin…

    2022年7月22日
    15
  • matlab中ewma实现,ewma 移动平均模型

    matlab中ewma实现,ewma 移动平均模型动平均(WMA)制图AL的计算方ME控R法J本文基于马尔可夫链的ME.WMA控制图AL计算的数学模型,用MaaR采tb平台,该模l对学术界和实际应用……在采样数据标准化处理的基础上,应用马尔可夫链进一步研究了多元指数移动平均(MEWMA)控制图中ARL计算的数学模型,采用Matlab实现了算法,就算法的收敛性及计算……3【摘要】针对设备异常…

    2025年8月9日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号