454.四数相加
题目:给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足:
0 <= i, j, k, l < n
nums1[i] + nums2[j] + nums3[k] + nums4[l] == 0
解题:
思路:使用map,key为a+b,value为出现次数。再遍历k、l寻找0-a-b。
关键:
- 遍历1、2数组并记录record时,区分次数+1还是=1;
- 遍历3、4数组时,找到对应的key来统计对应的value,是相加而不是相乘!!两个哈希才相乘
报错:for i in nums1:而不是range(len(nums1)),遍历数值而不是下标。
点击查看代码
class Solution:
def fourSumCount(self, nums1: List[int], nums2: List[int], nums3: List[int], nums4: List[int]) -> int:
record={}
count=0
for i in nums1:
for j in nums2:
if i+j in record:
record[i+j]+=1
else:
record[i+j]=1
for k in nums3:
for l in nums4:
if 0-k-l in record:
count+=record[0-k-l]
return count