2023-11-07
1 暴力法 o(n4)时间复杂度太高,不行
2 哈希表法 22一组,key为 相加 value为达到这个值的次数
res+=value+value了
class Solution { Map<Integer,Integer> map1=new HashMap<>(); Map<Integer,Integer> map2=new HashMap<>(); public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) { for(int i=0;i<nums1.length;i++){ for(int j=0;j<nums2.length;j++){ map1.put(-(nums1[i]+nums2[j]),map1.getOrDefault(-(nums1[i]+nums2[j]),0)+1); } } for(int i=0;i<nums1.length;i++){ for(int j=0;j<nums2.length;j++){ map2.put(nums3[i]+nums4[j],map2.getOrDefault(nums3[i]+nums4[j],0)+1); } } int res=0; Iterator<Map.Entry<Integer,Integer>> iterator=map2.entrySet().iterator(); while(iterator.hasNext()){ Map.Entry<Integer,Integer> entry=iterator.next(); int key=entry.getKey(); int value=entry.getValue(); if(map1.containsKey(key)){ int value2=map1.get(key); res+=value*value2; } } return res; } }