454. 4Sum II
Solution 1: Using three for loops
class Solution:
def fourSumCount(self, nums1: List[int], nums2: List[int], nums3: List[int], nums4: List[int]) -> int:
cnt12 = defaultdict(int) # all the possible combinations from nums1 and nums2
for n1 in nums1:
for n2 in nums2:
cnt12[n1 + n2] += 1
cnt34 = defaultdict(int) # all the possible combinations of nums3 and nums4
for n3 in nums3:
for n4 in nums4:
cnt34[n3 + n4] += 1
res = 0
for k12 in cnt12:
for k34 in cnt34:
if k12 + k34 == 0:
res += cnt12[k12] * cnt34[k34]
return res
Solution 2: Using two for loops
class Solution:
def fourSumCount(self, nums1: List[int], nums2: List[int], nums3: List[int], nums4: List[int]) -> int:
d = defaultdict(int)
for n1 in nums1:
for n2 in nums2:
d[n1 + n2] += 1
res = 0
for n3 in nums3:
for n4 in nums4:
if -(n3 + n4) in d:
res += d[-(n3 + n4)]
return res