454. 四数相加 II
第一遍
思路
想不出来,除了暴力解法,完全想不出来其他解法,看答案思路了…
学习了两个新的方法:
getOrDefault:返回指定键对应的值,如果不存在,则返回默认值
containsKey:判断是否包含key
class Solution {
public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {
int count = 0;
Map<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);
}
}
for (int k = 0; k < nums3.length; k++) {
for (int l = 0; l < nums4.length; l++) {
int judge_num = -(nums3[k] + nums4[l]);
if (map.containsKey(judge_num)) {
count += map.get(judge_num);
}
}
}
return count;
}
}
383. 赎金信
第一遍
思路
这题想出来了,用了15mins,思考+做题;
做完之后看了一下给的题解范例,使用了数组+字符的ascii码只有0-26;
巧妙的利用了字符串ascii码;
同时,因为利用了数组,数据结构更加简单,用时大幅减少;
454. 四数相加 II
第一遍
思路
想不出来,除了暴力解法,完全想不出来其他解法,看答案思路了