454. 4Sum II

·

1 min read

Problem Link

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