454.四数相加2
思路(hashmap):
- new一个hashmap,将nums1和nums2组成的和放入map中,key为和的值,value为其出现次数
- 若 0-(nums3[i] + nums4[j]) 的值与map的key值相同,则count += map的value,最后返回count即可
代码实现:
class Solution {
public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {
int count = 0;
HashMap<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < nums1.length; i++) {
for (int j = 0; j < nums2.length; j++) {
map.put(nums1[i] + nums2[j], map.getOrDefault(nums1[i] + nums2[j], 0) + 1);
}
}
for (int i = 0; i < nums3.length; i++) {
for (int j = 0; j < nums4.length; j++) {
if (map.containsKey(0 - nums3[i] - nums4[j])) {
count += map.get(0 - nums3[i] - nums4[j]);
}
}
}
return count;
}
}