查看网站的目录文件夹权限设置,沈阳seo博客,制作视频app,网站建设 统一质量标准day27【LeetCode】454. 四数相加 II
1.题目描述
附上题目链接#xff1a;四数相加 II
给你四个整数数组 nums1、nums2、nums3 和 nums4 #xff0c;数组长度都是 n #xff0c;请你计算有多少个元组 (i, j, k, l) 能满足#xff1a;
0 i, j, k, l nnums1[i] …day27【LeetCode】454. 四数相加 II
1.题目描述
附上题目链接四数相加 II
给你四个整数数组 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]
输出12.题解
c
写法一
class Solution {
public:int fourSumCount(vectorint nums1, vectorint nums2, vectorint nums3, vectorint nums4) {unordered_mapint,int mymap;int count0;for(int a : nums1){for(int b : nums2){mymap[ab];}}for(int c:nums3){for(int d:nums4){if(mymap.find(0-(cd)) ! mymap.end()){count mymap[0-(cd)];}}}return count;}
};解读
定义了一个 unordered_mapint, int 类型的哈希表 mymap用于存储两个数组中元素的和以及对应的出现次数。遍历 nums1 和 nums2 两个数组将两个数组中元素两两相加的结果存入哈希表 mymap 中。再次遍历 nums3 和 nums4 两个数组在遍历过程中判断哈希表中是否存在 -(cd) 这个值若存在则将对应的数量累加到 count 中。最终返回 count即满足条件的两两相加等于 0 的组合数量。
写法二
public:int fourSumCount(vectorint nums1, vectorint nums2, vectorint nums3, vectorint nums4) {unordered_mapint,int mymap;int count0;for(int a : nums1){for(int b : nums2){mymap[ab];}}for(int c:nums3){for(int d:nums4){if(mymap.count(-c-d)){count mymap[-c-d];}}}return count;}
};本质是一样的只不过在寻找对应数的时候用的是count函数 以及简化了写法。
python
(版本一)使用字典
class Solution:def fourSumCount(self, nums1: List[int], nums2: List[int], nums3: List[int], nums4: List[int]) - int:mymap dict()count 0for a in nums1:for b in nums2:if ab in mymap:mymap[ab] 1else:mymap[ab] 1for c in nums3:for d in nums4:if -c-d in mymap:count mymap[-c-d]return count第一个if那儿可以换成下面这种写法一行搞定。
mymap[ab] mymap.get(ab, 0) 1(版本二)使用defaultdict
class Solution:def fourSumCount(self, nums1: List[int], nums2: List[int], nums3: List[int], nums4: List[int]) - int:rec defaultdict(int)count 0for i in nums1:for j in nums2:rec[ij] 1for i in nums3:for j in nums4:count rec.get((-i-j),0)return count(版本三)使用counter
class Solution:def fourSumCount(self, nums1: List[int], nums2: List[int], nums3: List[int], nums4: List[int]) - int:rec collections.Counter(ij for i in nums1 for j in nums2)count 0for i in nums3:for j in nums4:if -i-j in rec:count rec[-i-j]return countok了就到这里叭
如果觉得作者写的不错求给博主一个大大的点赞支持一下你们的支持是我更新的最大动力
如果觉得作者写的不错求给博主一个大大的点赞支持一下你们的支持是我更新的最大动力
如果觉得作者写的不错求给博主一个大大的点赞支持一下你们的支持是我更新的最大动力