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