这题其实挺有意思的。
如果我们采用一个哈希表保存a+b+c,遍历D获取和为0个数那么 是O(N)+O(N^3)
如果我们采用一个哈希表保存d,遍历A+B+C,那么和上面一样。
但是如果我们采用一个哈希表保存a+b,遍历C+D,那么时间是O(N^2)+O(N^2)
class Solution:
def fourSumCount(self, nums1: List[int], nums2: List[int], nums3: List[int], nums4: List[int]) -> int:
rec={}
ret=0
for a in nums1:
for b in nums2:
s=a+b
rec[s]=rec.get(s,0)+1
for c in nums3:
for d in nums4:
t=-(c+d)
ret+=rec.get(t,0)
return ret