题目

image.png

思路

  • 遍历 A 和 B 所有元素和的组合情况,并记录在map 中,map 的 key 为两数和,value 为该两数和出现的次数

遍历 C 和 D 所有元素和的组合情况,取和的负值判断其是否在map 中,若存在则取出 map 对应的 value 值,count = count + value

代码

  1. public int fourSumCount(int[] A, int[] B, int[] C, int[] D) {
  2. Map<Integer, Integer> map = new HashMap<>();
  3. int len = A.length, res = 0;
  4. for (int a : A) {
  5. for (int b : B) {
  6. map.put(a + b, map.getOrDefault(a + b, 0) + 1);
  7. }
  8. }
  9. for (int c : C) {
  10. for (int d : D) {
  11. int key = -(c + d);
  12. if (map.containsKey(key)) {
  13. res += map.get(key);
  14. }
  15. }
  16. }
  17. return res;
  18. }

四数相加 II