454题.四数相加II
思路
因为只需要返回满足条件的个数,无需关注下标只用关注结果,分成两组,算AB的和的集合,再去算CD的和,用零减去和判断在AB集合里面是否存在
代码
HashMap
class Solution {
public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {
HashMap<Integer,Integer> map=new HashMap<>();
for(int i=0;i<nums1.length;i++){
for(int j=0;j<nums2.length;j++){
int sum=nums1[i]+nums2[j];
map.put(sum,map.getOrDefault(sum,0)+1);
}
}
int count=0;
for(int i=0;i<nums3.length;i++){
for(int j=0;j<nums4.length;j++){
int need=0;
need-=(nums3[i]+nums4[j]);
count+=map.getOrDefault(need,0);
}
}
return count;
}
}
383. 赎金信
思路
跟前一天的基本上一模一样,记录一下不长记性。由小写字母组成,可以用数组代替Map