Q30 LeetCode454 四數相加2

清川1發表於2024-06-13

相對於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 }

相關文章