4sum问题用python_Python中的4Sum II

假设我们有四个整数值的列表A,B,C,D,我们必须计算有多少个元组(i,j,k,l)使得A [i] + B [j] + C [k] + D [l]为零。考虑所有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。这是因为存在两个元组,它们是(0,0,0,1),所以A [0] + B [0] + C [0] + D [1] = 1 +(-2)+(-1)+ 2 = 0 ,另一个元组是(1、1、0、0),A [1] + B [1] + C [0] + D [0] = 2 +(-1)+(-1)+ 0 = 0

为了解决这个问题,我们将遵循以下步骤-制作一张称为求和的映射

对于A中的每个元素如果i + j不在求和图中,则设置sums [i + j]:= 1

否则增加和的值[i + j]

对于B中的每个元素j

计数器:= 0

对于C中的每个元素如果(-1)*(i + j)相加,则counter:= counter + sums [-1 *(i + j)]

对于D中的每个元素j

返回柜台

示例

让我们看下面的实现以更好地理解-class Solution(object):

def fourSumCount(self, A, B, C, D):

sums ={}

for i in A:

for j in B:

if i+j not in sums:

sums[i+j] = 1

else:

sums[i+j] +=1

counter = 0

for i in C:

for j in D:

if -1 * (i+j) in sums:

#print(-1 * (i+j))

counter+=sums[-1*(i+j)]

return counter

ob1 = Solution()print(ob1.fourSumCount([1,2], [-2,-1], [-1,2], [0,2]))

输入值[1,2]

[-2,-1]

[-1,2]

[0,2]

输出结果2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值