🌕 🌗 454. 四数相加 II
2022年6月9日
- algorithm
🌕 🌗 454. 四数相加 II
难度: 🌕 🌗
问题描述
解法
class Solution {
public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {
// 思路:
// A & B 一组,求可能出现的和的情况 O(N^2)
// C & D 一组,求能达到结果的情况,而不用再次放入另一个 map 中
int res = 0;
int len = nums1.length;
HashMap<Integer, Integer> map = new HashMap<>();
for(int i = 0; i < len; i ++) {
for(int j = 0; j < len; j ++) {
int sum = nums1[i] + nums2[j];
if(!map.containsKey(sum)) {
map.put(sum, 1);
} else {
int count = map.get(sum);
count ++;
map.put(sum, count);
}
}
}
for(int i = 0; i < len; i ++) {
for(int j = 0; j < len; j ++) {
int target = - (nums3[i] + nums4[j]);
if(map.containsKey(target)) {
int count = map.get(target);
res += count;
}
}
}
return res;
}
}