四数相加 II python(leetcode454)

四数相加 II python(leetcode454),第1张

四数相加 II python(leetcode454)

#454. 四数相加 II

得到满足 A[i]+B[j]+C[k]+D[l]=0A[i]+B[j]+C[k]+D[l]=0 的四元组数目

将四个数组分成两部分,AA 和 BB 为一组,CC 和 DD 为另外一组

        # 分两步计算
        # 第一步计算nums1和nums2中相加的值,值作为key,每个值出现的次数作为value存入哈希表record
        # 第二步计算nums3和nums4中相加的值,计算-(nums3+nums4),如果其在record中出现,则count统计出现的次数
        # 对于每个-(nums3+nums4),都统计其在record中出现的次数
        # 数组的长度1 <= n <= 200
class Solution(object):
    def fourSumCount(self, nums1, nums2, nums3, nums4):
        """
        :type nums1: List[int]
        :type nums2: List[int]
        :type nums3: List[int]
        :type nums4: List[int]
        :rtype: int
        """
        # 分两步计算
        # 第一步计算nums1和nums2中相加的值,值作为key,每个值出现的次数作为value存入哈希表record
        # 第二步计算nums3和nums4中相加的值,计算-(nums3+nums4),如果其在record中出现,则count统计出现的次数
        # 对于每个-(nums3+nums4),都统计其在record中出现的次数
        # 数组的长度1 <= n <= 200
        record = {}
        for i in range(len(nums1)):
            for j in range(len(nums2)):
                sum1 = nums1[i] + nums2[j]
                if sum1 in record:
                    record[sum1] += 1
                else:
                    record[sum1] = 1
        count = 0
        for k in range(len(nums3)):
            for l in range(len(nums4)):
                sum2 = -(nums3[k] + nums4[l])
                if sum2 in record:
                    count += record[sum2]  
        return count

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5680263.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存