Q30 LeetCode454 四数相加2

相对于4重循环,改成两个二重循环O(n2)

使用HashMap存储前两个数组的和,再在另外两个数组的循环中找值

 

 

 1 class Solution {
 2     public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {
 3         int ans=0;
 4         int sum=0;
 5         Map<Integer, Integer> map = new HashMap<>();
 6         for(int i=0;i<nums1.length;i++){
 7             for(int j=0;j<nums2.length;j++){
 8                 sum=nums1[i]+nums2[j];
 9                 map.put(sum, map.getOrDefault(sum, 0) + 1);
10             }
11         }
12         
13         for(int k=0;k<nums3.length;k++){
14                     for(int f=0;f<nums4.length;f++){
15                        ans+=map.getOrDefault(0-nums3[k]-nums4[f],0);
16                     }
17                 }
18         return ans;
19     }
20 }

 

posted @ 2024-06-13 21:20  清川1  阅读(12)  评论(0)    收藏  举报