目录
四数相加2(Leetcode454)
四数相加2(Leetcode454)
public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {int cnt = 0;Map<Integer,Integer> map = new HashMap();/** 这一步用来存 数组1和数组2里面值的和,然后再用来和数组3和数组4和的值进行比较,如果相加为0则满足条件* a+b+c+d=0 我们先将a+b的值还有出现次数存起来 * 这里要注意值的合可以重复,所以不去重*///这里是求a+b和的个数for(int i = 0;i<nums1.length;i++) {for(int j = 0;j<nums2.length;j++) {int temp = nums1[i]+nums2[j];//求两个数组的值map.put(temp, map.getOrDefault(temp, 0)+1); //存temp出现的次数,默认为0,之前存过则+1;}}//这里求0-(c+d)=temp,求map中是否有满足a+b=temp 有的话需要加上次数。for(int i = 0;i<nums3.length;i++) {for(int j = 0;j<nums4.length;j++) {int temp = nums3[i]+nums4[j]; if(map.get(0-temp)!=null) { //map中找是否有和0减去数组3和数组4之后相等的值cnt+=map.get(0-temp);}}}return cnt;}