北京网站制作网络推广公司,网站怎么做双机房切换,网站宣传内容,东莞建设网站费用目录
题目
思路
代码 题目 题目链接#xff1a;. - 力扣#xff08;LeetCode#xff09; 给你四个整数数组 nums1、nums2、nums3 和 nums4 #xff0c;数组长度都是 n #xff0c;请你计算有多少个元组 (i, j, k, l) 能满足#xff1a; 0 i, j, k, l nnums1…目录
题目
思路
代码 题目 题目链接. - 力扣LeetCode 给你四个整数数组 nums1、nums2、nums3 和 nums4 数组长度都是 n 请你计算有多少个元组 (i, j, k, l) 能满足 0 i, j, k, l nnums1[i] nums2[j] nums3[k] nums4[l] 0 示例 1 输入nums1 [1,2], nums2 [-2,-1], nums3 [-1,2], nums4 [0,2]
输出2
解释
两个元组如下
1. (0, 0, 0, 1) - nums1[0] nums2[0] nums3[0] nums4[1] 1 (-2) (-1) 2 0
2. (1, 1, 0, 0) - nums1[1] nums2[1] nums3[0] nums4[0] 2 (-1) (-1) 0 0示例 2 输入nums1 [0], nums2 [0], nums3 [0], nums4 [0]
输出1提示 n nums1.lengthn nums2.lengthn nums3.lengthn nums4.length1 n 200-228 nums1[i], nums2[i], nums3[i], nums4[i] 228 思路
为了降低时间复杂度将四重for循环拆分为两个二层for循环
1.将nums1、nums2与nums3、nums4拆分为两组
2.遍历nums1与nums2用字典sum1记录两数之和以及和出现的次数key为两数之和value为出现次数其他语言可以用map存储
3.用count记录四数和为0的次数count0
4.遍历nums3与nums4对两数求和的同时在字典sum1中寻找是否有与之相加和为0的key如有count加上对应value的值
代码
class Solution:def fourSumCount(self, nums1: List[int], nums2: List[int], nums3: List[int], nums4: List[int]) - int:count 0sum1 dict()for i in nums1:for j in nums2:sum1[ij] sum1.get(ij,0) 1for i in nums3:for j in nums4:target 0 - i - jif target in sum1:count sum1[target]return count