vue做网站首页,wordpress前台不显示图片,fireworks8做网站,下载好看影视大全极速版给定四个包含整数的数组列表 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 。所有整数的范围在 -2^28 到 2^28 - 1 之间#…
给定四个包含整数的数组列表 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 。所有整数的范围在 -2^28 到 2^28 - 1 之间最终结果不会超过 2^31 - 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
思路把前两个数组元素之和放进map在后续遍历后两个数组的时候找map里是否存在当前两个数组之和的相反数。
class Solution {public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {int res 0;MapInteger, Integer map new HashMapInteger, Integer();// 统计两个数组中的元素之和同时统计出现的次数放入mapfor (int i : nums1) {for (int j : nums2) {map.put(i j, map.getOrDefault(i j, 0) 1);}}// 统计剩余的两个元素的和在map中找是否存在相加为0的情况同时记录次数for (int i : nums3) {for (int j : nums4) {res map.getOrDefault(0 - i - j, 0);}}return res;}
}