佛山全市核酸检测,公司seo推广营销网站,建设英文网站多少钱,wordpress 编辑插件下载给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) #xff0c;使得 A[i] B[j] C[k] D[l] 0。
为了使问题简单化#xff0c;所有的 A, B, C, D 具有相同的长度 N#xff0c;且 0 ≤ N ≤ 500 。所有整数的范围在 -228 到 228 - 1 之间#xf…给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) 使得 A[i] B[j] C[k] D[l] 0。
为了使问题简单化所有的 A, B, C, D 具有相同的长度 N且 0 ≤ N ≤ 500 。所有整数的范围在 -228 到 228 - 1 之间最终结果不会超过 231 - 1 。
例如:
输入: A [ 1, 2] B [-2,-1] C [-1, 2] D [ 0, 2]
输出: 2
解释: 两个元组如下:
(0, 0, 0, 1) - A[0] B[0] C[0] D[1] 1 (-2) (-1) 2 0(1, 1, 0, 0) - A[1] B[1] C[0] D[0] 2 (-1) (-1) 0 0
代码
class Solution {public int fourSumCount(int[] A, int[] B, int[] C, int[] D) {MapInteger,Integer mapnew HashMap();int res0;for(int i0;iA.length;i)for(int j0;jB.length;j)//产生AB数组相加 所有可能的和并记录出现次数map.put(A[i]B[j],map.getOrDefault(A[i]B[j],0)1);for(int i0;iC.length;i)//产生cd数组相加 所有可能的和并检查map中是否有相加为0的数字for(int j0;jD.length;j)if(map.containsKey(-C[i]-D[j]))resmap.get(-C[i]-D[j]);return res;}
}