在Python中查找形成目标和的不同四元组的程序
假设我们有四个数字列表A、B、C和D,还有一个目标值,我们需要找到不同的四元组(i,j,k,l),使得A[i]+B[j]+C[k]+D[l]等于目标值。
因此,如果输入如下A = [5, 4, 3] B = [8, 4] C = [6, 2] D = [4, 10] target = 23,则输出将为3,这三组是[5, 8, 6, 4] [3, 4, 6, 10] [3, 8, 2, 10]。
解决这个问题,我们需要遵循以下步骤:
- 计数:= 0
- m:=一个空映射
- 对于每个A中的i,进行如下操作:
- 对于每个B中的j,进行如下操作:
- m[i + j]:= m[i + j] + 1
- 对于每个C中的k,进行如下操作:
- 对于每个D中的z,进行如下操作:
- 如果(target – (k + z))在m中,则
- count:= count + m[target – (k + z)]
- 对于每个B中的j,进行如下操作:
- 返回count
下面的实现可以获得更好的理解:
例子
class Solution:
def solve(self, A, B, C, D, target):
count = 0
from collections import defaultdict
from collections import Counter
m = defaultdict(int)
for i in A:
for j in B:
m[i + j] += 1
for k in C:
for z in D:
if target - (k + z) in m:
count += m[target - (k + z)]
return count
ob = Solution()
A = [5, 4, 3]
B = [8, 4]
C = [6, 2]
D = [4, 10]
target = 23
print(ob.solve(A, B, C, D, target))
输入
[5, 4, 3], [8, 4], [6, 2], [4, 10], 23
输出
3