建立英文网站,3d建模师容易找工作吗,php源码项目 门户网站开发,温州快速网站推广公司力扣题目链接
给你四个整数数组 nums1、nums2、nums3 和 nums4 #xff0c;数组长度都是 n #xff0c;请你计算有多少个元组 (i, j, k, l) 能满足#xff1a;
0 i, j, k, l nnums1[i] nums2[j] nums3[k] nums4[l] 0 分析#xff1a;
当需要判断一个元素是…力扣题目链接
给你四个整数数组 nums1、nums2、nums3 和 nums4 数组长度都是 n 请你计算有多少个元组 (i, j, k, l) 能满足
0 i, j, k, l nnums1[i] nums2[j] nums3[k] nums4[l] 0 分析
当需要判断一个元素是否在集合中时就使用哈希法
set map multiset multimap 底层为红黑树unordered_set unordered_map底层是哈希
unordered_set会去重故使用unordered_map。
如果首先遍历一个数组然后遍历三个数组来进行判断时间复杂度n*n^3;
如果遍历两个数组然后遍历两个数组进行判断时间复杂度n^2*n^2为最优解。 map中的key对应ab数组的和value对应和出现的次数。
int fourSumCount(vectorint A, vectorint B, vectorint C, vectorint D) {unordered_mapint, int umap; //key:ab的数值value:ab数值出现的次数for (int a:A) {for (int b:B) {umap[ab];}}int count 0;//统计总次数 abcd0 cd0-(ab)for (int c:C) {for (int d:D) {if (umap.find(0-(cd))!umap.end()) {count umap[0 - (c d)];//每出现一次 就和ab数组中出现的次数相加}}}return count;
}